Ich versuche mal es zumindest grob zu erklären:
Code:
[COLOR=#ff0000]find "/Users/DeinName/Desktop/Rec/Klienten" -type f -name "[^.]*"[/COLOR] | [COLOR=#006400]while read file[/COLOR]; [COLOR=#00ff00]do mv "$file" "${file%/*}/${file#* }"[/COLOR]; [COLOR=#006400]done[/COLOR]
find sucht im angegebenen Pfad nach alle Dateien vom Typ Datei (
-type f) und deren Name nicht mit einem Punkt beginnen (
"[^.]*", Google: regular expression, kurz regex). find gibt die Dateien dann zeilenweise aus. Mit | leitet man diese Ausgabe dann an den nächsten Befehl weiter.
while read file geht nun die Dateien der Reihe nach in einer Schleife durch, dabei wird die aktuelle Datei in der Variablen
$file gespeichert. Alles was nun zwischen
do und
done steht, wird für jede Datei einmal ausgeführt. In diesem Fall ist das der Befehl
mv.
mv "/A/Datei" "/B/Datei" bewegt eine Datei von A nach B. Das kann auch benutzt werden, um Dateien umzubenennen. Der erste Pfad ist bereits in
$file gespeichert, den zweiten Teil erhalten wir durch String-Zerlegung des ersten Pfades:
$file gibt "/Pfad/zu/deiner Datei" aus
${file%/*} gibt den Pfad bis zum letzten "/" aus: "/Pfad/zu"
${file#* } gibt den Pfad ab dem letzten " " aus: "Datei"
Dazwischen fehlt noch ein "/", das kann man einfach dazwischen schreiben und dann wird daraus "/Pfad/zu/Datei". Mehr zur String-Zerlegung findest du hier:
http://www.lansys.ch/shell/strings.htm