Ich verwende die Cygwin-Befehle „find“ und „grep“, um Dateien anhand eines Musters zu finden. Ich mache Folgendes:
find . -iname '*.zip' -print -exec unzip -l {} \; 2> error.txt |grep -i vbs
Es funktioniert einwandfrei und ich habe einen Dateinamen mit „vbs“ im Dateinamen. ABER jetzt muss ich etwas Ähnliches tun, aber ich muss den Dateinamen basierend auf dem Inhalt finden, z. B. ist „vbs“ nicht Teil des Dateinamens, sondern Teil des Dateiinhalts. Wie könnte das geändert werden? Vielleicht so etwas wie:
find . -iname '*.zip' -print -exec unzip -l {} \; 2> error.txt | xargs ??? Kann mir jemand einen Rat geben? Danke
Antwort1
Da Sie den Dateiinhalt greppen werden, -l
reicht es nicht aus, die ZIP-Datei aufzulisten. Sie müssen sie tatsächlich entpacken. Also:
temp=`mktemp -d`
find . -iname '*.zip' -print -exec unzip -d $temp {} \; 2> error.txt
grep -ir vbs $temp