So kopieren Sie alle Dateien mit dem entsprechenden Muster in einen neuen Ordnerbaum mit derselben Struktur

So kopieren Sie alle Dateien mit dem entsprechenden Muster in einen neuen Ordnerbaum mit derselben Struktur

Ich habe einen Ordner Alle mit

AllFolders
    F1
        some_file_20170315_xyz.txt
        some_file_20170314_xyz.txt
        ....
    F2
        some_other_file_20170315_abc.txt
        some_other_file_20170314_abc.txt
        ...
    ...
    Fn 

Wie kann ich alle Dateien mit einem bestimmten Datum in einen anderen leeren Ordner kopieren, sodass die Ordnerstruktur ebenfalls kopiert wird und so aussieht:

Folder_20170315
    F1
        some_file_20170315_xyz.txt
    F2
        some_other_file_20170315_abc.txt

Antwort1

Eine Möglichkeit besteht darin, findund zu verwenden cp:

find . -iname '*20170315*' -exec cp --parents {} /tmp/Folder_20170315 \;

Der Zielordner muss bereits vorhanden sein. Wenn Sie möchten, können Sie seine Erstellung auch per Skript durchführen.

Es sieht so aus, als ob Sie den Dateinamen überprüfen möchten, es findlässt sich aber auch das Dateidatum überprüfen.

Antwort2

Da cp --parentses auf dem Mac nicht verfügbar ist, habe ich zwei Befehle verwendet, um ein ähnliches Problem zu lösen:

find . -name '*.example' | xargs -I FOO dirname FOO | xargs -I FOO mkdir -p /new/root/directory/FOO
find . -name '*.example' | xargs -I FOO cp FOO /new/root/directory/FOO

Der erste Befehl erstellt den Verzeichnisbaum. Der zweite kopiert die Dateien.

Dies setzt voraus, dass es findschnell ist. Wenn findes einen Leistungsengpass gibt, müssen Sie weiter optimieren. Sie könnten beispielsweise die Operationen in eine Funktion verschieben.

verwandte Informationen