모든 파일을 동일한 이름의 디렉터리에 추출합니다.

모든 파일을 동일한 이름의 디렉터리에 추출합니다.

우분투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/

관련 정보