이름 셸 스크립트로 중첩된 .zip 파일 압축 풀기

이름 셸 스크립트로 중첩된 .zip 파일 압축 풀기

일부 파일을 선택하면 되는 매우 깊게 중첩된 구조를 가진 zip 파일을 다운로드하고 있습니다. 파일 구조는 다음과 같습니다.

myfile.zip/
C*_01.zip, ....., C*_xx.zip/

각 C*_xx.zip 파일에서:

a*.zip
b*.zip
..../
file1.txt
file2.txt
...
targetfile.txt
...

각 "C*.zip"에서 대상 파일을 선택해야 한다는 점에 유의하세요.

쉘 스크립팅에 대한 경험이 많지 않아 다른 솔루션을 기반으로 스크립트를 작성했지만 작동하지 않았습니다. 어떤 조언이라도 감사하겠습니다.

wget url | find . -name "myfile.zip" | while ["`find -type f -name 'C*.zip' | wc -l`" -gt 0 ]; do find -type f -name "b.zip" | find -type f -name "targetfile.txt" exec unzip -- '{}' \;; done

답변1

유사한 스크립트 파일을 생성 fetchtarget.sh하고 URL을 첫 번째 매개변수로 사용하여 실행합니다.

#!/bin/sh

dir=$(mktemp -d)
cd $dir || exit

wget $1

# deep unzip loop
while true; do
   find -iname '*.zip' > zipindex
   test -s zipindex || break
   for zip in $(cat zipindex); do unzip -o $zip && rm $zip; done
done

# purge and show result
find $dir -name targetfile.txt -print -or -type f -exec rm {} \; 

관련 정보