CLI/Bash Ordner verschieben

riff-raff

Captain
Registriert
Jan. 2009
Beiträge
3.924
Ich habe einen Ordner mit rund 20k Unterordnern in welchen jeweils Dateien liegen. Die Unterordner sind in alphabetischer Reihenfole. Nun möchte ich gern die Unterordner nach und nach in ein anderes Verzeichnis verschieben.
Bsp. Alle Unterordner mit Anfangsbuchstaben "A" verschieben incl aller beinhalteten Dateien.

Mein Ansatz bisher:
Code:
find /ursprungspfad/ -name "A*" -type d -maxdepth 1 | while read; do
    mv "${REPLY}" /zielpfad/
done

Das Gerät ist headless, ich greife via VPN+ssh darauf zu.
 
Warum nicht "mv A* /ziel" ?
 
:freak:

Weil zu einfach ....

;)

Danke
 
-r? Wenn man einen Ordner via mv verschiebt, ist alles darin enthaltene automagisch mit verschoben. Du denkst vermutlich ans rekursive Kopieren via cp.
 
die Option -r hab ich auch nicht verwendet, mv reicht ....
 
Ich beschäftige mich auch gerade mit find, und wollte nur noch mal anmerken, dass find auch eine -exec Option hat, mit der man die gefundenen Dateien per {} automatisch einfügen kann. Das kann mitunter sehr praktisch sein.
Code:
find /ursprungspfad -maxdepth 1 -name "A*" -type d -exec mv -t /zielpfad {} +
-exec muss abgeschlossen werden entweder mit \; (alternativ ';') oder +. Wobei mit ; der Befehl hinter -exec für jede gefundene Datei je einmal aufgerufen wird, und mit + mit möglichst vielen Dateien als Parametern gleichzeitig (passen aber manchmal aufgrund der hohen Anzahl nicht alle in eine Eingabezeile rein, daher macht -exec mit + automatisch so viele Aufrufe wie nötig).
Der Abschluss per ; oder + muss immer direkt hinter {} kommen, daher hier im Beispiel mv mit Parameter -t (Target), damit zwischen {} und + nichts steht.
 
Das ist ja fast noch umständlicher als ich ursprünglich vor Augen hatte.

Code:
mv A* /pfad_zum_ziel/

macht genau was es soll ....
 
Zurück
Oben