我正在下载一个 zip 文件,该文件具有非常深的嵌套结构,我只需要从中选择一些文件。文件结构如下所示:
myfile.zip/
C*_01.zip, ....., C*_xx.zip/
在每个 C*_xx.zip 文件中:
a*.zip
b*.zip
..../
file1.txt
file2.txt
...
targetfile.txt
...
请注意,在每个“C*.zip”上,我需要选择目标文件。
我对 shell 脚本编写没有太多经验,因此我根据其他解决方案编写了一个脚本,但它不起作用。我将不胜感激任何提示:
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 {} \;