• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Wie Dateien mit FIND umbenennen

Hallo Allerseits!

Ich habe eine ganze Reihe von Sicherungsdateien in verschiedenen Unterverzeichnissen. Die Dateien sind durch anhängen von ".bak" an den ursprünglichen Dateinamen als Sicherung gekennzeichnet. Mit
Code:
 find -name "*.txt.bak"
finde ich die Dateien. Wie kann ich das ".bak" am Ende für "zig" Dateien in verschiedenen Unterverzeichnissen elegant entfernen?
 
Sowas mache ich meist in Perl, wegen der besseren Kontrolle, die man dann darüber hat. Hier als "Einzeiler", der nur die "mv"-Befehle ausgibt, also nicht selbst die Umbenennungen vornimmt (aus Sicherheitsgründen). Die Ausgabe kann man dann in ein Skript pipen.
Code:
perl -e 'use File::Find;use Cwd;sub wanted {$n = $File::Find::name;if($n=~/\.txt.bak/){$d=$n;$d=~s/\.txt.bak$/\.txt/;$e="mv \"$n\" \"$d\"";print"$e\n";}}find(\&wanted,getcwd());'

Das würde man dann also so in ein Skript bringen:
Code:
perl -e ... > renamescript.sh
Das kann man sich dann in einem Editor anschauen und kontrollieren, und dann ggf. mit
Code:
bash renamescript.sh
ausführen.
 
Zuletzt bearbeitet:
Oben