본문 바로가기
컴퓨터쟁이/setting

리눅스 - 폴더 안에 있는 .zip, .gz 파일 여러개 한번에 압축풀기

by 빙글빙글이 2021. 2. 23.
728x90
반응형

[파일 구조도] 

/폴더 이름

     --/폴더1.zip

          --/파일1.gz

          --/파일2.gz

     --/폴더2.zip

          --/파일1.gz

          --/파일2.gz

    --/폴더3.zip  

         ..... 

 

json_Bioassay 폴더안에 여러개의 zip파일들이 있다. 

zip으로 묶여있는 폴더들을 한번에 압축을 풀고 싶다면

 

unzip은 여러개를 한번에 사용할 수 없어서(file globing 을 제대로 지원하지 않아서) shell 파일을 만들어서 활용해야함 

 

참고 : https://www.lesstif.com/lpt/linux-zip-unzip-80248839.html

 

[unzip.sh] - 파일명 

 for i in *.zip; 
 do unzip $i -d /home/foldername ;   # -d 뒤에는 압축을 풀고싶은 주소를 쓰시면 됩니다.  
 done

 

실행은 

$sh unzip.sh

이렇게 명령어를 치면 쉘이 실행됩니다. 

 

 

zip 파일 압축을 풀어서 폴더 안에를 들어가보니 파일들이 또 gz으로 압축이 되어있다. 

 

zip파일을 풀고, 그 중 하나의 폴더안에 들어가면 .gz 파일들이 여러개 존재함

 

gz압축은 폴더안에 들어가서

$gzip -d *.gz

명령어를 치면 한번에 다 풀 수 있다. 

 

-> 이걸 활용해서 또 unzip파일처럼 쉘파일을 만들려고 이렇게저렇게 해봤는데, 그런 비효율적인 도전은 안하는게 나았다. 나보다 똑똑한 분들이 리눅스를 제대로 활용하기 위해 똑똑한 명령어들이 많다. 잘 찾아보고 또 꼼꼼하게 읽어서 찾아내자. 검색을 잘하는 것도 중요한듯 ㅠㅠ

 

하지만, 폴더들이 엄청 많아서 한번에 여러 폴더 안에 있는 모든 파일을 한번에 압축을 풀고 싶다면 

$find <your directory path here> -name '*.gz' | xargs gunzip 

이렇게 쉘 명령어를 치면 한번에 해당 폴더안에 있는 gz으로 압축된 파일들의 압축이 풀린다. 

 

참고: https://stackoverflow.com/questions/53909839/loop-through-multiple-levels-of-subfolders-and-convert-csv-gz-files-to-csv

 

 

이게 돌아가는 것을 확인하고 싶으면,

htop 명령어를 실행해서 현재 돌아가고 있는 파일들의 상태를 확인하는 창에서

실행되고 있는 "find" 명령어를 찾아서 확인하면 맨 마지막 열에서 파일 이름들이 바뀌는 것을 볼 수 있다. 

728x90
반응형