我正在使用“find”和“grep”cygwin 命令来根据某种模式定位文件。我正在这样做:
find . -iname '*.zip' -print -exec unzip -l {} \; 2> error.txt |grep -i vbs
它工作正常,我的文件名中包含“vbs”。但现在我需要做类似的事情,但我需要根据其内容找到文件名,例如“vbs”不是文件名的一部分,而是文件内容的一部分。如何修改它?也许是这样的:
find . -iname '*.zip' -print -exec unzip -l {} \; 2> error.txt | xargs ??? 有人能给点建议吗?谢谢
答案1
由于您要 grep 文件内容,-l
列出 zip 文件是不够的。您需要实际解压缩它。所以:
temp=`mktemp -d`
find . -iname '*.zip' -print -exec unzip -d $temp {} \; 2> error.txt
grep -ir vbs $temp