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 find
die exec
Option, 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 exec
Zeile '{}'
wird durch den tatsächlichen Dateinamen ersetzt und die Datei wird zum Ziel verschoben. Ebenso ersetzen Sie zum Kopieren einfach mv
durch 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 -i
Option nach mv
bzw. hinzufügen cp
.
grep
, und deren Likes sind nicht erforderlich xargs
. Dies würde die Dinge unnötig verkomplizieren.