Hoffe, jemand kann helfen.
Ich habe eine Reihe von Zip-Dateien. Diese ZIP-Dateien enthalten E-Mail-Dateien (.eml). Ich muss alle Dateien zwischen zwei Personen finden.
Anhand einer Antwort, die ich hier gefunden habe, kann ich leicht eine von ihnen finden
for z in 2013-*.zip ; do zipgrep "PATTERN" $z | sed "s/^/$z: /" ; done
Es findet den zweiten Namen in den identifizierten Dateien, mit denen ich zu kämpfen habe.
Ich habe ein zweites grep und ein zip grep auf der Akte ohne Erfolg versucht.
Jede Hilfe sehr geschätzt.
Antworten:
Wenn sich die Muster nicht unbedingt in derselben Zeile befinden,
zipgrep
müssen Sie sie in ein kleines Skript einbinden, das prüft, ob beide Muster in derselben Datei gefunden wurden. Versuchen Sie etwas wie:Dadurch wird jede ZIP-Datei durchsucht
pat1
, wenn sie gefunden wird (das ist das, was das&&
bedeutet),pat2
und wenn sie dies ebenfalls findet, wird der Name der Datei gedruckt. Ich leite die Standardausgabe (>/dev/null
) um, sodass nur die Dateinamen gedruckt werden. Wenn Sie auch die relevanten Zeilen sehen möchten, gehen Sie stattdessen wie folgt vor:OK, dies druckt die Zip-Datei und den Namen der passenden Datei aus der Zip-Datei. Es erstellt ein temporäres Verzeichnis (
mktemp -d
), entpackt jede Zip-Datei und löscht das Verzeichnis. Wenn Sie mit großen Dateien arbeiten, die eine Weile dauern, aber ich glaube, es gibt keine Möglichkeit, dies zu vermeiden.quelle
eml
Datei in der Zip-Datei befindet, oder?