Wie kann ich Dateien aus vielen Unterverzeichnissen in ein anderes Verzeichnis kopieren und dabei die Verzeichnisstruktur beibehalten?

Wie kann ich Dateien aus vielen Unterverzeichnissen in ein anderes Verzeichnis kopieren und dabei die Verzeichnisstruktur beibehalten?

Ich habe ein Verzeichnis mit vielen ähnlichen Unterverzeichnissen. Jedes dieser Unterverzeichnisse enthält einige Dateien, die mich interessieren, und einige, die mich nicht interessieren.

Ich möchte kopieren:

VON: zwei bestimmte Dateien: file1.txt file2.json aus jedem Unterverzeichnis

AN: ein anderer Ort

Aber die Unterverzeichnisse an diesem Ort zu erstellen

Wenn ich zum Beispiel

base
|_folder_00000001
|         |_-file1.txt
|         |_ file2.json
|         |_some_other_things_I_dont_need
|         |_some_other_folder_I_dont_need
|
|_folder_00000002
|         |_-file1.txt
|         |_ file2.json
|         |_some_other_things_I_dont_need
|         |_some_other_folder_I_dont_need
|
|_folder_00000003
|         |_-file1.txt
|         |_ file2.json
|         |_some_other_things_I_dont_need
|         |_some_other_folder_I_dont_need
|
|_folder_00000004
|         |_-file1.txt
|         |_ file2.json
|         |_some_other_things_I_dont_need
|         |_some_other_folder_I_dont_need
|

Ich möchte dies an einen anderen Ort kopieren, aber ohne die "anderen Dinge und Ordner, die ich nicht brauche"

target
|_folder_00000001
|         |_-file1.txt
|         |_ file2.json
|         
|
|_folder_00000002
|         |_-file1.txt
|         |_ file2.json
|             |
|_folder_00000003
|         |_-file1.txt
|         |_ file2.json
|             |
|_folder_00000004
|         |_-file1.txt
|         |_ file2.json
|         

Wie kann ich dies vom Bash-Terminal aus tun?

Antwort1

Sie können es verwenden cpmit --parents:

cd base
cp -v --parents */file1.txt */file2.json ../target/

Antwort2

Gibt es ein Muster für die Dateien, die Sie kopieren möchten?

Wenn wir im Beispiel die Dateien „-file1.txt“ und „file2.json“ als die Dateien nehmen, die Sie in die neue Verzeichnisstruktur kopieren möchten, kann dies meiner Meinung nach folgendermaßen erfolgen:

rsync -av --include="*/" --include="*-file1.txt" --include="*file2.json" --exclude="*" /src/dir/  /dest/dir/

Ich hoffe das hilft.

verwandte Informationen