Login
Newsletter
Di, 14. November 2000, 23:08

Umbenennen von Dateien

Angenommen, man hat eine Reihe von Bildern geschossen, diese aber in der Eile mit einem nichtssagenden Namen wie a-001.jpg versehen.

Wie kann man sie jetzt in urlaub-2000-09-01-001.jpg usw. umbenennen, ohne das für alle Dateien einzeln zu tun? Der Befehl mv (nicht ausprobieren) mit Wildcards kann hier nicht funktionieren, da Wildcards von der Shell, nicht von jedem Programm einzeln, ausgewertet werden. Der folgende Einzeiler löst die Aufgabe:

for i in a-0* ; do mv $i urlaub-2000-09-01-${i#a-}; done

Eine for-Schleife sollte man als UNIX-Systemverwalter sowieso auswendig hinschreiben können, da man eine Menge Arbeit damit sparen kann. Entscheidend ist hier die Substitution ${i#a-}. Diese ist ein Feature der Shell. In diesem Fall wird vom Inhalt der Variablen i (ein Dateiname wie a-001.jpg) alles außer dem String-Anfang a- zurückgegeben und damit der neue Dateiname konstruiert.

Es lohnt sich übrigens, gelegentlich einmal in der Bash-Manpage zu stöbern. Dort findet man noch viele weitere Features, die nicht so häufig verwendet werden. Die gestellte Aufgabe hätte auch auf andere Art und Weise mit Shell-Features gelöst werden können.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten