[linux] 디렉토리의 모든 파일 압축 해제

ZIP 파일 디렉토리가 있습니다 (Windows 시스템에서 생성됨). 을 사용하여 수동으로 압축을 풀 수 unzip filename있지만 셸을 통해 현재 폴더의 모든 ZIP 파일을 어떻게 압축 해제 할 수 있습니까?

우분투 리눅스 서버 사용하기.



답변

링크 에 따르면 bash에서 작동 합니다 .

압축 해제 \ *. zip


답변

와일드 카드를 피하기 위해 따옴표를 넣으십시오.

unzip "*.zip"


답변

다음 bash 스크립트는 현재 디렉토리의 모든 zip 파일을 zip 파일의 파일 이름을 사용하여 새 디렉토리로 추출합니다.

다음 파일들 :

myfile1.zip
myfile2.zip 

다음으로 추출됩니다 :

./myfile1/files...
./myfile2/files...

쉘 스크립트 :

#!/bin/sh
for zip in *.zip
do
  dirname=`echo $zip | sed 's/\.zip$//'`
  if mkdir "$dirname"
  then
    if cd "$dirname"
    then
      unzip ../"$zip"
      cd ..
      # rm -f $zip # Uncomment to delete the original zip file
    else
      echo "Could not unpack $zip - cd failed"
    fi
  else
    echo "Could not unpack $zip - mkdir failed"
  fi
done


답변

unzip * .zip 또는 하위 폴더에있는 경우

find . -name "*.zip" -exec unzip {} \;


답변

모든 .zip파일의 압축을 풀고 파일과 이름이 같은 폴더에 새 폴더에 내용을 저장 .zip하십시오.

find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;

이것은 @phatmanace의 답변의 확장이며 @RishabhAgrahari의 의견을 다루고 있습니다 .

이것은 현재 디렉토리의 모든 zip 파일을 추출 할 것입니다. 만약 zip 파일 (하위 폴더에 있음)을 각 하위 폴더에서 추출하려면 어떻게해야합니까?


답변

for i in *.zip; do
  newdir="${i:0:-4}" && mkdir "$newdir"
  unzip "$i" -d  "$newdir"
done

이렇게하면 모든 zip 아카이브가 zip 아카이브의 파일 이름으로 명명 된 새 폴더로 압축 해제됩니다.

a.zip b.zip c.zipa b c폴더에 각각 압축이 풀립니다 .


답변

aunpack -e *.zip과가 atool설치되어 있어야합니다. zip에 하나의 파일 만 포함되어 있지 않으면 지능적으로 오류를 처리하고 항상 서브 디렉토리로 압축을 푸는 이점이 있습니다. 따라서 unzip디렉토리 구조가없는 zip에있는 것처럼 대량의 파일로 현재 디렉토리를 오염시킬 위험이 없습니다 .