Wie können Sie in Unix alle Dateien eines bestimmten Typs in ein Verzeichnis verschieben (oder kopieren)?

Wie können Sie in Unix alle Dateien eines bestimmten Typs in ein Verzeichnis verschieben (oder kopieren)?

Ich bin noch nicht mit allen Tricks von grep/find/awk/xargs vertraut, also haben Sie Geduld mit mir =]

Ich habe einen bestimmten Dateityp, beispielsweise *.xxx, an zufälligen Stellen in einem bestimmten Verzeichnis. Wie kann ich alle diese Dateien finden und sie in einen Ordner in meinem Home-Verzeichnis unter Unix verschieben (der möglicherweise noch nicht existiert)?

Antwort1

Verwenden Sie finddie execOption, erstellen Sie aber zuerst den Zielordner.

mkdir -p /home/somewhere/else
find /somewhere -iname "*.xxx"

Dadurch wird alles aufgelistet, was verschoben werden soll. Wenn Sie nun sicher sind, dass dies die Dateien sind, die Sie verschieben möchten, führen Sie Folgendes aus:

find /somewhere -iname "*.xxx" -exec mv '{}' /home/somewhere/else/ \;

In der execZeile '{}'wird durch den tatsächlichen Dateinamen ersetzt und die Datei wird zum Ziel verschoben. Ebenso ersetzen Sie zum Kopieren einfach mvdurch cp. Das \;wird benötigt, um den Befehl zu beenden.

Wenn Sie vor jedem Dateivorgang, der eine bereits vorhandene Datei überschreiben würde, eine Bestätigung wünschen, können Sie die -iOption nach mvbzw. hinzufügen cp.

grep, und deren Likes sind nicht erforderlich xargs. Dies würde die Dinge unnötig verkomplizieren.

verwandte Informationen