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 vbs
ist 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 stderr
Stream. 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.txt
durch ersetzen /dev/null
(funktioniert möglicherweise nicht bei allen Cygwin-Versionen).