我需要在压缩文件中查找一些文本。我使用的是 Cygwin。有些压缩文件是空的。显然,我根本不想得到有关这些“空 zip 文件”的“嘈杂”信息。例如
find . -iname '*.zip' -print -exec unzip -l {} \; |grep -i vbs
vbs
我正在寻找的字符串在哪里。
问题是它返回了我想要的内容,但也返回了很多噪音,如下所示:
C\ProgramData\ABC\DEF\VBScripts\OutputArchiveFiles.vbs
warning [/z/XYZ/Backup/123/456/Backup Set 1/Backup Files 1/Backup files 2.zip]: zipfile is empty
我不想看到那些带有“zipfile 为空”的行
我尝试用管道传输它,|grep -v 'zipfile is empty'
但它仍然输出那些行。
我的问题是:如何避免打印那些“空”行并只看到我正在寻找的行;即 vbs?
答案1
这些额外的行可能在stderr
流中。您可以通过查看它们是否重定向到单独的文件(例如command 2> error.txt
)
基本上,运行:
find . -iname '*.zip' -print -exec unzip -l {} \; 2> error.txt |grep -i vbs
如果这解决了您的问题,您可以替换error.txt
为/dev/null
(这可能不适用于所有版本的 cygwin)