Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateien rekursiv umbenennen
Wie kann ich in einem Shell-Skript alle Dateien in einer Ordnerstruktur rekursiv umbenennen. Z.B. von *.doc *.alt.doc .
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
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?
weiß denn niemand etwas über den "regcp" Befehl? Ich habe das aus dem Buch - Linux Installation, Konfiguration und Anwendung.
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
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!
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
ich habe eine Lösung gefunden...
find ./ -name *.txt -exec cp {} {}.txt.bak \;
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.