Wie finde ich bestimmte Dateitypen und tarne sie?

Wie finde ich bestimmte Dateitypen und tarne sie?

Es scheint, ich habe ein Problem. Ich habe einige verschiedene Dateitypen in meinem aktuellen Verzeichnis und ich möchte nurTeerDie.pngDateien. Ich habe damit angefangen:

find -name "*.png" | tar -cvf backupp.tar

Es funktionierte nicht, da ich die Dateien nicht angegeben hatte. Ich schaute mir also an, wie andere es gemacht haben, und fügte xargs hinzu:

find -name "*.png" | xargs tar -cvf backupp.tar

Diesmal hat es geklappt und die Datei „backupp.tar“ wurde erstellt, aber hier ist das Problem. Ich kann sie scheinbar nicht extrahieren. Immer wenn ich Folgendes eingebe:

tar -xvf backupp.tar

Es passiert nichts. Ich habe versucht, chmod und sudo zu ändern, aber nichts funktioniert.

Habe ich also den völlig falschen Befehl eingegeben oder habe ich einfach etwas übersehen?

Antwort1

Jeder Ihrer beiden Ansätze war nahezu funktionsfähig, hatte jedoch jeweils ein eigenes Problem.

In Ihrem ersten Ansatz versuchen Sie, eine Liste von Dateien an weiterzuleiten tar. Wenn Sie tardie Liste der Dateien von der Standardeingabe lesen möchten, müssen Sie die Optionen -T/ --files-fromund verwenden, z. B.-

find -name '*.png' -print0 | tar -cvf backup.tar --null -T - 

Eine Referenz finden Sie in der offiziellen Dokumentation:

NOTIZ:Die Verwendung der Flags -print0und --nullsollte sicherstellen, dass auch Dateinamen verarbeitet werden, die Leerzeichen enthalten.

tarBei Ihrem zweiten Ansatz versuchen Sie, via auszuführen xargs, verwenden aber die Option „create“ ( --create/ -c). Wenn Sie die Option „create“ mit xargsoder in einer for-Schleife verwenden, wird das Archiv nach jeder Iteration überschrieben. Versuchen Sie stattdessen, entweder die Option „append“ ( -a/ --append) oder die Option „update“ ( -u/ --update) zu verwenden, z. B.:

find -name "*.png" -exec tar -uvf backupp.tar {} \;

Dadurch werden nach jeder Iteration Dateien an das Archiv angehängt, anstatt es zu überschreiben.

Wenn Sie fertig sind, können Sie in jedem Fall die Option „Liste“ ( --list/ -t) verwenden, um den Inhalt des Archivs anzuzeigen und zu überprüfen, ob alles wie erwartet funktioniert hat:

tar tf backupp.tar

Antwort2

Sie können einfach den Platzhalter

tar -cvf backup.tar *.png

oder durch Verwendungfind

find -name "*.png" | tar -cvf backup.tar -T -

Die -TOption ruft den Dateinamen aus DATEI ab, in diesem Fall stdin-

verwandte Informationen