圧縮ファイル内のテキストを見つけなければなりません。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
「zipファイルが空です」という行は見たくない
パイプで接続しようとしました|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のすべてのバージョンで機能するとは限りません)。