파일 배치 압축 풀기

파일 배치 압축 풀기

내가 시도할 때

 unzip filename.zip

효과가있다. 그러나 일련의 zip 파일의 압축을 풀어야 합니다.

왜:

 find . -name "*.zip" -print0 | xargs -0 unzip

또는

 ls *.zip | xargs unzip

작동 안함?

두 경우 모두 "경고: 파일 이름 불일치:" 메시지가 나타납니다.

답변1

다음 명령을 실행할 수 있습니다.

$ unzip '*.zip'

여기에서 찾아보세요인용하다.

답변2

귀하의 명령은 모든 파일을 동일한 명령줄에 채우기 때문에 작동하지 않습니다. 이는 대부분의 프로그램에서 작동하지만 unzip첫 번째 인수는 zip 파일로 사용되며 첫 번째 인수 이후의 모든 인수는 추출할 파일로 사용됩니다. 각 파일에 대해 명령을 한 번씩 실행해야 합니다.

find . -name "*.zip" -print0 | xargs -0 -n1 unzip

또는

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

답변3

Bash에서는 다음을 수행할 수도 있습니다.

for i in *.zip; do
    unzip "$i"
done

출력을 다른 위치에 배치할 수 있도록 스위치 도 unzip사용할 수 있습니다.-d

예를 들어:

uzdir=/path/to/unzips
for i in *.zip; do
    [ -d "$uzdir/$i" ] || mkdir -p "$uzdir/$i"
    unzip "$i" -d "$uzdir/$i"
done

답변4

디렉터리 플래그를 사용하여 위에 제공된 루프보다 더 간단한 솔루션이 있습니다 -d.

unzip -o somefiles.zip -d $directoryPath

관련 정보