調整 grep 指令以避免「額外」行

調整 grep 指令以避免「額外」行

我必須在壓縮文件中找到一些文字。我正在使用 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 isempty”的行

我嘗試透過管道連接它,|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)

相關內容