MATLAB 을 사용하여 압축을 하고 싶으면 zip() 이라는 함수를 사용 합니다.

 

현재 폴더의 하위 내용들을 압축하고 싶은 경우 보통은 현재 폴더를 압축하곤 하는데 이렇게 하려면 현재 폴더가 아닌곳에 zip 파일을 저장해야 합니다.

 

오늘은 현재 폴더 하위의 내용들을 압축하는 방법에 대해 소개하려 합니다.

 

현재 폴더의 내용을 검색하는 방법은 dir() 이라는 함수를 사용합니다. dir() 함수는 recursive 한 파일 검색은 되지 않습니다.

 

recursive 한 파일 검색을 하고 싶다면 아래 포스팅을 참조하시면 됩니다.

 

http://iamaman.tistory.com/757

 

아무튼 오늘은 그냥 현재 폴더에 대해서만 검색 할것이므로 dir() 함수를 사용합니다.

 

그런데 dir() 함수를 사용하여 현재 폴더를 검색하면 '.', '..' 라는 폴더가 검색 됩니다.

 

바로 현재와 상위 폴더 입니다.

 

현재 폴더의 하위 내용들을 압축하고 싶기 때문에 그래서 이 부분들을 제외하고 압축을 해야 합니다.

 

위 소개한 부분들을 제외하고 압축을 하는 방법은 아래 코드와 같습니다.

 

a= dir('.');

fileAll=cell(length(a),1);

 

for n=1:length(a)

    if ~(strcmp(a(n).name,'.') || strcmp(a(n).name,'..'))

        fileAll{n}=a(n).name;

    end

end

 

AllFile=fileAll(~cellfun('isempty',fileAll));

zip('CurrentFolder.zip',AllFile);

 


오늘은 MATLAB을 사용하여 파일을 압축하는 방법에 대해 소개하려 합니다.

 

MATLAB 에서 파일을 압축하기 위해서는 다양한 함수가 있는데~

 

zip, unzip, gzip , gunzip, tar, untar 등과 같은 함수가 있습니다.

 

압축방법은 아래 매뉴얼에 나와 있는 바와 같이~

 

http://kr.mathworks.com/help/matlab/ref/zip.html

 

zip 파일명을 넣고 뒤에 압축하고자 하는 파일 명들을 셀 타입으로 넣으면 됩니다.

 

zip('backup.zip',{'*.m','*.mat'});

OR

zip('backup.zip',{'abc.m','aaa.mat'});

 

그런데 파일이 현재 폴더에 있다면 위와 같은 방식으로 하면 되는데~

 

저 같은 경우에는 파일이 여러 군데로 분산되어 있는 경우가 많이 있습니다.

 

이런 경우에는 사용하는 파일을 하나 하나 찾아서 압축파일에 추가하려면 매우 불편하고 실수 할 수도 있는 일이죠~

 

이런 경우에는 아래 소개했던 MATLAB Dependency Report 를 사용하는 게 좋습니다.

 

http://iamaman.tistory.com/255

 

위 포스팅에서는 MATLAB Dependency Report 라는 새로운 창을 통해 확인 하는 거지만~

 

depfun('filename') 이라는 함수를 사용하면 filename 에서 사용하는 함수들의 Dependency 를 다 찾아 줍니다.

 

그런데 최신 매뉴얼을 확인 하니 아래 주소에서 matlab.codetools.requiredFilesAndProducts() 를 사용하라고 하더군요.

 

http://kr.mathworks.com/help/matlab/matlab_prog/identify-dependencies.html#f7-58063

 

그럼 이제 matlab.codetools.requiredFilesAndProducts() 를 사용해서 Dependency 를 찾으면 되는거고~

 

Zip() 함수를 사용해서 압축을 하면 되겠네요~ 현재 제가 샘플로 사용할 convTest_20151018.m 파일을 통해 한번 실습 해보죠~

 

위 포스팅에서 소개했던 MATLAB Dependency Report (종속성 리포트)를 확인 해보니 convTest_20151018.m 파일은 conv_m.m 파일을 사용 중에 있습니다.

 

 

convTest_20151018.m 파일에 대해 정상적으로 압축하는 명령은 다음과 같습니다.

 

[fList, pList] = matlab.codetools.requiredFilesAndProducts('convTest_20151018.m');

zip('test.zip',fList)

 

matlab.codetools.requiredFilesAndProducts() 함수를 통해 convTest_20151018.m 파일에서 사용하는 모든 파일들이 fList 라는 셀 타입에 저장 되고~

 

이를 zip() 함수를 통해 압축하는 겁니다.

 

test.zip 파일을 확인 해보면~

 

convTest_20151018.m, conv_m.m 파일을 들어 있는 것을 확인 할 수 있습니다.


국내 압축 툴 하면 많은 분들이 알집을 많이들 알고 계신데 ~ 


알집은 개인한테는 무료이지만 기업에서는 돈을 주고 사서 사용해야 하는 유료 툴입니다. 


지난 포스팅에서도 공짜 압축 툴에대해 소개 드린적이 있는데~ 



2011/04/03 - [유틸] - 공짜 압축 프로그램, 압축시대



요즘은 오늘 소개드리는 반디집이 대세라고 하더군요. 사실 이 반디집은 압축시대의 개발자가 압축시대를 갈아업고 반디집을 만들었다고 하니깐~ 압축시대의 업그레이드 버전이라는 생각도 들더군요. 


반디집은 아래 주소에서 다운로드 가능하구요~ 


http://apps.bandisoft.com/bandizip/


첫 페이지 소개에도 있듯이 회사에서도 무료인 압축툴이라서 라이센스 걱정 안하고 편하게 사용하셔도 되는 툴입니다. 


요렇게 깔끔하게 생겼더군요. 




지난번에 윈도우에서 command 입력을 제공하는 압축툴인 7z 에 대해서도 소개 드렸었는데~ 


2012/01/27 - [컴퓨터일반] - 괜찮은 압출 유틸 7-Zip


반디집에는 7z.exe 가 포함되어 있다고 하더군요. 


http://apps.bandisoft.com/bandizip/tip/



홈페이지에 특징에 대해서도 소개가 있는데~ 보시는 바와 같이 현존하는 최고의 압축툴이라고 생각 되네요~  



멀티코어도 지원해서 속도도 빠르고 맥 OS 용 반디집도 있다고 하니깐 많이 사용해 보시길~ 


http://apps.bandisoft.com/bandizipx/


아!! 리눅스에서는 와인으로 실행해야 한다는군요~ 


http://apps.bandisoft.com/bandizip/help/wine/



압축 유틸로 우리나라에서는 아직도 알집을 많이 이용하시는 것 같은데요~

 

알집은 개인한테나 무료지 기업에는 무료가 아닙니다~ 즉! 다 돈 주고 사야 되는 프로그램이라는 것이죠.

 

찾아보면 아래 포스팅에서 설명 드린 압축시대와 같이 굉장히 좋은 공짜 압축 유틸이 많이 있습니다.

 

공짜 압축 프로그램, 압축시대
 




오늘은 그 중에서도 요즘 많이들 사용하시는 압축 유틸인 7-Zip 에 대해 소개해 드리려 합니다.

 

 

제가 7-Zip 을 사용하는 이유는 공짜라는 것 만이 아니라 command line version 의 유틸이 필요 했기 때문입니다.

 

컴퓨터를 편리하게 이용하려면 특정 시점이 되면 알아서 자동으로 뭔가가 되기를 바라기 마련인데 ~~

 

특정 폴더의 압축이나 압축 해제를 자동으로 할 필요가 있을 때 이런 command line version 의 압축 유틸이 필요 합니다.

 

7-Zip의 공식 홈페이지는 아래 주소와 같습니다.

 

http://www.7-zip.org/

 

위 페이지에서 license란을 보시면 GNU LPGL 라이선스며 기업에서도 제약 없이 사용될 수 있다고 써 있군요.

 

운영 체제는 윈도우리눅스/유닉스를 지원 하고 위 페이지에서 어떤 포맷에 대해 지원을 하나 확인 하실 수 있습니다.

 

다운로드는 아래 페이지에서 받고요~ 각자 운영체제에 맞는 버전을 다운로드 하여 설치하시면 되겠습니다.

 

http://www.7-zip.org/download.html

 

command line version 을 이용하시려면 7z.exe 나 7za.exe (a=alone) 파일을 이용하게 되는데 7z.exe 파일은 7z.dll 파일을 이용한다 합니다.

 

7z.exe 를 이용하여 압축 또는 해제를 하실 때는 7z.dll 도 같은 폴더 또는 path 에 있어야 합니다.

 

다라서 7z.exe 와 7z.dll 이 있는 폴더를 path 환경변수에 추가한 후 이용하시는 것이 편리합니다.

 

7za.exe 은 standard alone 버전이며 7z.exe 를 이용하는 것에 비해 적은 파일 포맷을 지원 합니다.

 

도움말을 보면 7za.exe 는 7z, lzma, cab, zip, gzip, bzip2, Z, tar 포맷만 지원을 하는군요.

 

7za.exe 파일은 위 다운로드 페이지에서 7-Zip Command Line Version 을 다운로드 하시면 됩니다.

 




command line version을 이용한 압축해제 명령어는 간단합니다.

 

7z a archive1.zip subdir\ 하시면 subdir 폴더와 이하의 모든 파일 및 폴더가 achieve1.zip 파일로 압축이 되고

 

7z x archive.zip 하면 현재 폴더에 압축을 풀고

 

압축을 해제할 특정 폴더를 정하려면 –o 옵션을 줘서

 

7z x archive.zip –oc:\abc 하면 c:\abc 폴더에 압축 해제가 됩니다.

 

-o 옵션 이외에도 다양한 옵션들이 있으니 도움말을 참조 해 보시기 바랍니다.


'컴퓨터일반' 카테고리의 다른 글

C99 header complex.h  (0) 2012.02.15
ACER 노트북 XP 설치 시 BIOS 세팅  (0) 2012.01.30
Linux 설치 USB 만들기, UNetbootin  (0) 2012.01.29
ScanDisk Cruzer Blade 16GB USB  (0) 2012.01.28
괜찮은 압출 유틸 7-Zip  (0) 2012.01.27
qBittorrent  (0) 2012.01.25
centos 다운로드  (0) 2012.01.18
Google Documents  (0) 2012.01.16
윈도우 시작 종료음 제거  (0) 2012.01.14

+ Recent posts