Login
Newsletter
Werbung

So, 26. März 2006, 00:00

Dateinamen in der Gewalt des Texteditors

Dateien umbenennen mit emv und Alternativen

Shell

Dank der Tab-Completion von Bash geht das Verschieben und Umbenennen von einzelnen Dateien mit mv recht flott von der Hand. Midnight Commander oder gar ein grafischer Dateimanager waren deshalb für den Autor nie ein Thema. Um das versehentliche Überschreiben von bereits vorhandenen Dateien zu verhindern, ist sich der Autor auch nicht zu schade, mv mit Stützrädern (alias mv='mv -i') zu betreiben.

Für die Durchführung gleichartiger Namensänderungen bei mehreren Dateien bietet sich die for-Schleife in Kombination mit der Parameter-Expansion (siehe man bash) oder den unzähligen Filterprogrammen an. Um auf Nummer Sicher zu gehen, gibt ein eingefügtes echo die Befehle nur aus. Ist man mit dem Ergebnis zufrieden, so entfernt man es und die Befehle werden ausgeführt.

An dieser Stelle sollte man sich die Grundlagen von sed und Regulären Ausdrücken (englisch: regular expressions; kurz: regex) ins Gedächtnis rufen oder gegebenenfalls anlesen: Wikipedia - sed, Wikipedia - Reguläre Ausdrücke.

> for i in file*; do echo mv "$i" "${i%txt}text"; done
mv file 1.txt file 1.text
mv file 2.txt file 2.text
mv file 3.txt file 3.text
> for i in file*; do echo mv "$i" "$(echo "$i" | tr '[a-z]' '[A-Z]' | sed -e 's/[0-9]\+/Nr&/')"; done
mv file 1.txt FILE Nr1.TXT
mv file 2.txt FILE Nr2.TXT
mv file 3.txt FILE Nr3.TXT

Wie man sieht, steht einem die Welt offen, wenn man mit der Shell und den traditionellen Unix-Tools vertraut ist. Natürlich ist man nicht nur auf das Umbenennen von Dateien beschränkt. Anstelle von mv können auch Konvertierungsprogramme für die Dateiinhalte (convert, lame, recode, sox, etc.) aufgerufen werden. Aus diesem Grund empfiehlt der Autor jedem ambitionierten Anwender, sich mit der for-Schleife und den wichtigsten Filterprogrammen vertraut zu machen.

Doch diese Methode hat auch ihre Nachteile. Zum einen ist es doch eine Menge ein Zwischenschritt nötig, damit man die abzusetzenden mv-Befehle sichtprüfen kann. Ein weiteres Problem stellen individuellere Änderungen dar. Beispielsweise wenn man eine Liste von Namen einer Reihe von Dateien zuweisen möchte. Oder wenn mehrere Dateien auf andere kreative Art und Weise umbenannt werden sollen. Die im nächsten Abschnitt beschriebenen Hilfsprogramme erleichtern einem zumindest die Tipparbeit.

Hilfsprogramme für mehrere Dateien

Wer die Shell-Schleife sicher beherrscht, kann sich einige Tastendrücke sparen und Kommandos benutzen, denen man nur noch die Ersetzungsvorschrift als Parameter mitgeben muss. Dem Skript rename übergibt man eine Perl-Anweisung zur Namensänderung als ersten Parameter und dann eine Dateiliste. Dieser Ansatz ist sehr flexibel, erfordert jedoch einige wenige Perl-Kenntnisse. (Bei Debian wurde rename in prename umbenannt, weil für den Befehl rename Alternativen vorgesehen sind. Gewissheit, ob rename zu prename verlinkt ist, verschafft man sich mit namei $(which rename). Geändert werden kann dies mit update-alternatives --config rename).

> rename -n 's/txt$/text/' file*
file 1.txt renamed as file 1.text
file 2.txt renamed as file 2.text
file 3.txt renamed as file 3.text
> rename -n 'y/a-z/A-Z/; s/(\d+)/Nr$1/' file*
file 1.txt renamed as FILE Nr1.TXT
file 2.txt renamed as FILE Nr2.TXT
file 3.txt renamed as FILE Nr3.TXT

Der Befehl mmv (multiple move) orientiert sich am DOS-Befehl ren, bietet jedoch viele zusätzliche Merkmale und ist wesentlich flexibler. So werden Dateinamen-Kollisionen aufgelöst und mögliche Fehler abgefangen. Dies geht aber leider auch mit einer etwas längeren Man-Page und speziell aufgebauten Parametern einher. Allerdings hat die Flexibilität auch ihre Grenzen. Der Autor zieht universell anwendbares Wissen einer Speziallösung vor, doch ist aus vielen Forenbeiträgen ersichtlich, dass auch mmv seine Anhänger hat.

> mmv -n '*.txt' '#1.text'
file 1.txt -> file 1.text
file 2.txt -> file 2.text
file 3.txt -> file 3.text

Die in diesem Abschnitt behandelten Programme erfordern immer noch einen Zwischenschritt, um die tatsächlichen Änderungen zu prüfen. Außerdem erlauben sie nur gleichförmige Umwandlungen der Dateinamen.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung