コンテンツファイルのGrep

コンテンツファイルのGrep

私は、何らかのパターンに基づいてファイルを見つけるために、cygwin コマンドの「find」と「grep」を使用しています。私は次のようにしています:

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 で検索するので、-lzip ファイルをリストするだけでは不十分です。実際に解凍する必要があります。つまり、次のようになります。

temp=`mktemp -d`    
find . -iname '*.zip' -print -exec unzip -d $temp {} \; 2> error.txt
grep -ir vbs $temp   

関連情報