Passen Sie den Grep-Befehl an, um „zusätzliche“ Zeilen zu vermeiden

Passen Sie den Grep-Befehl an, um „zusätzliche“ Zeilen zu vermeiden

Ich muss Text in komprimierten Dateien finden. Ich verwende Cygwin. Einige komprimierte Dateien sind leer. Natürlich möchte ich keine „verräterischen“ Informationen über diese „leeren Zip-Dateien“ haben. Beispiel:

find . -iname '*.zip' -print -exec unzip -l {} \; |grep -i vbs

Wo vbsist eine Zeichenfolge, nach der ich suche?

Das Problem besteht darin, dass es zwar das zurückgibt, was ich suche, aber auch eine Menge Rauschen mit Zeilen wie diesen zurückgibt:

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

Ich möchte diese Zeilen mit „Zip-Datei ist leer“ nicht sehen.

Ich habe versucht, es weiterzuleiten, |grep -v 'zipfile is empty'aber es gibt diese Zeilen trotzdem noch aus.

Meine Frage: Wie kann ich das Drucken dieser „leeren“ Zeilen vermeiden und nur die Zeilen anzeigen, nach denen ich suche, also vbs?

Antwort1

Diese zusätzlichen Zeilen sind wahrscheinlich im stderrStream. Sie können testen, ob siein eine separate Datei umleiten(z.B command 2> error.txt)

Führen Sie grundsätzlich Folgendes aus:

find . -iname '*.zip' -print -exec unzip -l {} \; 2> error.txt |grep -i vbs 

Wenn das Problem dadurch behoben wird, können Sie es error.txtdurch ersetzen /dev/null(funktioniert möglicherweise nicht bei allen Cygwin-Versionen).

verwandte Informationen