PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateien rekursiv umbenennen



cos
16-04-2003, 14:19
Wie kann ich in einem Shell-Skript alle Dateien in einer Ordnerstruktur rekursiv umbenennen. Z.B. von *.doc *.alt.doc .

fork
16-04-2003, 19:55
Ein Weg:


for FILE in $(find /DEIN/PFAD -name "*.doc" )
do
echo mv "$FILE" "$(echo $FILE| sed -e 's/\.doc/.alt.doc/')"
done


Das rote echo zeigt erst mal alle Befehle an die ausgeführt würden. Wenn die richtig sind kannst Du's streichen, nicht das deine komplette Dateisammlung aus versehen ins Nirvana geschickt wird.

Wen's interessiert:
Ich habe es nicht in einer einzigen find Anweisung hinbekommen. Das Problem ist die Quotierung. Der Befehl wird IMO nur ein mal von der Shell Interpretiert und nicht vor jeder Abarbeitung extra
-> keine Subshells möglich
-> Piping funktioniert nicht
Wenn ich die Sonderzeichen: $(...) | quotiere dann sind es auch für die letztendlich ausgeführten Einzelbefehle von exec keine Sonderzeichen mehr. Quotiere ich Sie nicht werden Sie vor dem Aufruf von find interpretiert.

Gruß
Tobias

cos
16-04-2003, 21:57
ich habe noch eine andere "einfachere" Lösung gefunden, aber leider kann ich diesen Befehl nicht unter suse 8.2 verwenden. Es sollte auch mit

regcp '*.doc *.alt.doc'

gehen. Aber bei mir kommt immer "bash: regcp: command not found". Hat jemand eine Idee warum? Oder muß ich noch was nachinstallieren?

cos
17-04-2003, 17:43
weiß denn niemand etwas über den "regcp" Befehl? Ich habe das aus dem Buch - Linux Installation, Konfiguration und Anwendung.

micha
17-04-2003, 18:16
Hi,

über Google hab ich die Skripte hier gefunden (sind auch aus dem Kofler, müssten also in Deinem Buch auch drin sein ? ):

http://lists.suse.com/archive/suse-linux/1999-Sep/1974.html

Gruß micha

cos
17-04-2003, 20:45
den Beitrag habe ich auch gelesen, aber wie es aussieht kennt mein System erst garkein 'regcp' oder 'regmv'. Ich beides ausprobiert. Immer bekomme ich eine Fehlermeldung!

msi
17-04-2003, 21:22
auf http://lists.suse.com/archive/suse-linux/1999-Sep/1974.html sind unten noch zwei shell scripte angegeben, ich denke bei denen handelt es sich um regcp, kopiers einfach nach /usr/local/bin und gib ihm ausführrechte (chmod +x /usr/local/bin/regcp)

Gruß Markus

cos
17-04-2003, 21:58
ich habe eine Lösung gefunden...

find ./ -name *.txt -exec cp {} {}.txt.bak \;