내가 시도할 때
unzip filename.zip
효과가있다. 그러나 일련의 zip 파일의 압축을 풀어야 합니다.
왜:
find . -name "*.zip" -print0 | xargs -0 unzip
또는
ls *.zip | xargs unzip
작동 안함?
두 경우 모두 "경고: 파일 이름 불일치:" 메시지가 나타납니다.
답변1
답변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