Ich möchte meine Festplatte nach allen komprimierten Dateisammlungen wie zip, gzip, bzip und anderen durchsuchen und den Inhalt derjenigen nach bestimmten Dateitypen (z. B. Bildern) durchsuchen lassen. Antivirus 'mach es, also glaube ich, dass es einen Weg geben sollte.
10
foo
aber nicht enthaltenfoo.png
.Antworten:
Der einfachste Ansatz wäre, den Inhalt des Archivs aufzulisten und nach Dateien der entsprechenden Erweiterung zu suchen. Zum Beispiel mit einer
zip
Datei:Die
-sf
Option weistzip
an, die in einem Archiv enthaltenen Dateien aufzulisten. Danngrep
wird nach einem.png
oder gesucht, das.jpg
sich am Ende der Zeile befindet ($
). Die-E
ermöglicht reguläre Ausdrücke erweitert, so dass wir verwenden können ,|
als OR und das-i
macht die passende Groß- und Kleinschreibung.Jedes Archivierungswerkzeug verfügt jedoch über einen anderen Befehl zum Auflisten des Inhalts. Ich habe ein Skript geschrieben , das mit den meisten der beliebtesten umgehen kann. Wenn Sie dieses Skript als speichern,
list_compressed.sh
können Sie Folgendes ausführen:Das würde Ihnen die häufigsten Bildtypen zeigen. Beachten Sie, dass bei diesem Ansatz davon ausgegangen wird, dass der Dateityp durch die Dateierweiterung bestimmt werden kann. Es werden keine Bilddateien gefunden, die keine Erweiterung haben, und es werden keine Dateien mit der falschen Erweiterung erkannt. Es gibt keine Möglichkeit, damit umzugehen, ohne die Dateien tatsächlich aus dem Archiv zu extrahieren und
file
auf jeder von ihnen auszuführen.Wenn Sie alle Archive finden möchten , die Bilddateien auf Ihrer Festplatte enthalten, kombinieren Sie Folgendes mit
find
:Der Fund Befehl wird für alle suchen
.gz
,.tgz
oder.zip
Dateien (Sie können so viele Erweiterungen hinzufügen , wie Sie mögen), diese werden dann durch mein Skript übergeben. Das-q
unterdrückt die normale Ausgabe von grep, es wird nichts gedruckt. Der&& echo
Name des Archivs wird nur gedruckt, wenn dasgrep
erfolgreich war.quelle
-name
zu-iname
. Es hat jedoch wenig Sinn, viele Komprimierungsprogramme (z. B. gzip) benötigen die spezifische Erweiterung.GZ
wird nicht funktionieren.Nicht so fortgeschritten wie Terdon, aber das reicht:
Speichern Sie den folgenden Code in einem Ordner, in dem sich Ihr gesamter Code befindet, unter
finda.sh
oder unter einem beliebigen anderen Namen:Führen Sie es dann in einem Verzeichnis aus, in dem sich alle Ihre Archive befinden, und dies ist die Ausgabe:
quelle
*.*
nur Dateien mit einer Erweiterung übereinstimmen. Außerdem werden hiermit alle Dateien in allen Archiven aufgelistet, die Sie nicht auf einen Dateityp testen.