Wie kann ich die Bildordner aus allen Verzeichnissen Case-r20-c020-t001-da1
, d. h. ..., Case-r20-c020-t001-dan
in einen neuen Pfad kopieren und dabei die ursprünglichen Verzeichnisnamen beibehalten, z. B. Case-r20-c020-t001-da1
... Case-r20-c020-t001-dan
? Nehmen wir an, ich habe eine Verzeichnisstruktur wie unten dargestellt:
Case-r20-c020-t001-da1/
|____image/ <<<< This is a folder that has some pictures
|______ jpg
|______ png
|____infromation/ <<<< This is a folder.
|_______ text1.txt
|_______ text2.txt
|____ file1.txt
Case-r20-c020-t001-da2/
|____image/
|______ jpg
|______ png
|____infromation/
|_______ text1.txt
|_______ text2.txt
|____ file1.txt
: .
Case-r20-c020-t001-dan/ <<< n goes from 3,...20.
|____image/
|______ jpg
|______ png
|____infromation/
|_______ text1.txt
|_______ text2.txt
|____ file1.txt
Mein erster Versuch ist wie folgt;
for f in Case-r20-c020-t001-da*;do (cp -r images /path/folder*);done
Ich möchte also das Obige in ein neues Verzeichnis kopieren und die Ausgabe soll wie folgt aussehen:
Case-r20-c020-t001-da1_images/
|____image/
|______ jpg
|______ png
Case-r20-c020-t001-da2_images/
|____image/
|______ jpg
|______ png
: .
Case-r20-c020-t001-dan_images/
|____image/
|______ jpg
|______ png
Ich bevorzuge es, ein Einzelkommando zu sein.
Jede Hilfe wäre willkommen.
Danke,
Antwort1
Als kleines Skript wäre das klarer, hier ist es jedoch als ein Befehl geschrieben. Der Übersichtlichkeit halber ist es in zwei Zeilen aufgeteilt: Entfernen Sie den Backslash, wenn Sie die Zeilen zusammenfügen möchten.
for old in /old/path/Case-r20-c020-t001-da*; \
do new="/new/path/$(basename $old)_images"; mkdir -p "$new" && cp -r "$old/image" "$new/"; done