ZIP 파일 디렉토리가 있습니다 (Windows 시스템에서 생성됨). 을 사용하여 수동으로 압축을 풀 수 unzip filename
있지만 셸을 통해 현재 폴더의 모든 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.zip
a
b
c
폴더에 각각 압축이 풀립니다 .
답변
aunpack -e *.zip
과가 atool
설치되어 있어야합니다. zip에 하나의 파일 만 포함되어 있지 않으면 지능적으로 오류를 처리하고 항상 서브 디렉토리로 압축을 푸는 이점이 있습니다. 따라서 unzip
디렉토리 구조가없는 zip에있는 것처럼 대량의 파일로 현재 디렉토리를 오염시킬 위험이 없습니다 .
