【发布时间】:2018-11-07 10:53:50
【问题描述】:
我有一个目录或压缩文件,每个都包含一组 XML 文件 我需要制作一个脚本,如果它们包含某个字符串,将从这些 ZIP 中提取 XML 文件
for z in `ls /path/to/archives/*.zip`
do for f in `unzip -l $z | grep 'xml' | awk -F" " '{print "$4" "$5}'`
do r = $( unzip -p $z $f | grep $string )
if [ '$r' != '' ]
unzip $z $f
fi
done
done
运行时,包含名为“my file.xml”的文件的压缩文件 A.zip 会导致循环将其作为 2 个文件“my”和“file.xml”处理 unzip 然后尝试从 A.zip 中提取文件 my 失败
关于如何强制 for 循环不将文件名中的空格视为分隔符的任何想法?
【问题讨论】: