우분투16.04
다음과 같은 파일이 포함된 디렉터리 가 있습니다 zip
.
directory
|
|---zip1.zip
|---zip2.zip
|
...
|---zip_very_large_number.zip
이제 또 다른 디렉토리가 있습니다 /home/usrname/anotherdir
. 모든 파일을 추출하는 방법이 있습니까 /home/usrname/anotherdir
?
/home/usrname/anotherdir
|---zip1(directory)
| |---_FILES_FROM_zip1.zip
|
|---zip2(directory)
| |---_FILES_FROM_zip2.zip
|
|---zip3(directory)
| |---_FILES_FROM_zip3.zip
|
...
|
|---zip_very_large_number(directory)
|---_FILES_FROM_zip_very_large_number.zip
이를 수행하는 깔끔한 방법이 있습니까 unzip
? 쉘 스크립트를 작성할 수는 있지만 별로 좋아 보이지는 않습니다...
답변1
unzip
압축 해제를 위해 한 번에 하나의 zip 파일만 허용하므로 이 작업을 수행하는 쉬운 방법은 없습니다 . 다음과 같은 일종의 쉘 루프를 고려하십시오.
for d in *.zip
do
dir=/home/usrname/anotherdir/zip${d%%.zip}
unzip -d "$dir" "$d"
done
답변2
이것은 현재 디렉토리의 모든 zip에 대해 작동하는 단일 라이너입니다.
for z in *.zip; do unzip "$z" -d "${z%".zip"}"; done
이것을 귀하의 항목에 추가할 수 있습니다..bashrc
alias unzip_all='for z in *.zip; do unzip "$z" -d "${z%".zip"}"; done'
에서 영감을 받다:
Method #2: Unzipping Multiple Files from Linux Command Line Using Shell For Loop (Long Version)
존재하다https://www.cyberciti.biz/faq/linux-unix-shell-unzipping-many-zip-files/