Login
Login-Name Passwort


 
Newsletter
Werbung

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

Dateinamen in der Gewalt des Texteditors

Dateien umbenennen mit emv und Alternativen

Dieser Artikel stellt das Shell-Skript emv (editor mv) vor, das einen beliebigen Texteditor zum Umbenennen von Dateien benutzt. Um dessen Einsatzgebiet abzustecken, wird zuerst auf die wichtigsten bisher verfügbaren Hilfsprogramme für die Kommandozeile eingegangen und deren Vor- und Nachteile gegenübergestellt. Im Anschluss wird emv im Detail vorgestellt und dessen Anwendung anhand praktischer Beispiele unter Zuhilfenahme des Texteditors vim aufgezeigt.

Einleitung

Mit zunehmender Digitalisierung unseres Lebens steigt auch der Verwaltungsaufwand der anfallenden Daten. Obwohl es schon die ein oder andere Lösung zur Indizierung, Verwaltung und Suche der heimischen Dateien gibt, verlassen sich viele ausschließlich auf eine durchdachte Verzeichnisstruktur und aussagekräftige Dateinamen. Die traditionellen Unix-Tools erlauben hierbei auch bei großen Datenmengen eine effiziente Verwaltung. Nur bei den Hilfsprogrammen zum Ändern von mehreren Dateinamen fehlte dem Autor bisher eine Lösung, die die mächtigen Kommandozeilen-Befehlen mit dem direkten Bearbeiten des Namens per Dateimanager kombiniert.

Ein (allzu seltener) Geistesblitz führte zu der Erkenntnis, dass ein Texteditor eigentlich alle Funktionen bietet, die zur komfortablen und effizienten Bearbeitung der Dateinamen notwendig wären. Schnell war ein Prototyp aus ein paar Shell-Befehlen gebaut, der die Ausgabe von ls in eine Datei umleitet, diese mit vi öffnet und aus dem Ergebnis mv-Befehle erzeugt:

'ls' --quoting-style=shell-always --show-control-chars -1 . | tee dirorg.txt > dirnew.txt
vi dirnew.txt
paste -d" " dirorg.txt dirnew.txt > dirall.txt
while read -r lin; do echo mv "$lin"; done < dirall.txt > dircmd.sh
. dircmd.txt
rm dirall.txt dircmd.sh dirnew.txt dirorg.txt

Aus diesem Prototyp entstand dank fleißiger Benutzung schnell ein robustes Shell-Skript namens emv (editor mv; Download). Eine möglicherweise nicht ganz aktuelle Version von emv finden Sie hier.

Um dessen Einsatzgebiet abzustecken, wird zuerst auf die wichtigsten bisher verfügbaren Hilfsprogramme für die Kommandozeile eingegangen. (Der Autor ist zu bequem, als dass er seine Kommandozeile verließe und geht davon aus, dass die grafischen Dateimanager seine Erwartungen an Flexibilität und Komfort ohnehin nicht erfüllen können.) Im Anschluss wird emv im Detail vorgestellt und dessen Anwendung anhand praktischer Beispiele aufgezeigt. Wer unter Zeitdruck steht, darf direkt zum Abschnitt emv - editor mv springen.

Hilfsprogramme zum Umbenennen von Dateien

Das Dokument Unix - Frequently Asked Questions - Part 2 Section 6 führt einige Möglichkeiten zum effizienten Umbenennen von mehreren Dateien auf. Weitere Programme findet man beim Durchstöbern der verfügbaren Debian-Pakete. Aus diesen Informationen ergeben sich drei verschiedene Ansätze:

  • Die vielfältigen Möglichkeiten der Shell: im Folgenden am Beispiel der Bash vorgestellt
  • Hilfsprogramme für mehrere Dateien:
    • mmv (multiple move) aus dem gleichnamigen Debian-Paket
    • Larry Walls rename, das bei Debian im Paket perl als Befehl prename enthalten ist
    • und sicher unzählige selbstgestrickte Programme in den privaten Werkzeugkästen der Leser
  • Texteditor-basierte Lösungen: imv (interactive move) und qmv (quick move) aus dem Debian-Paket renameutils

Die Existenz der letzteren Kategorie legt nahe, dass zuvor schon andere auf die vermeintlich einzigartige Idee des Autors gekommen sind. Glücklicherweise durfte der Autor nach dieser Entdeckung feststellen, dass emv trotzdem seine Daseinsberechtigung hat.

Die unten aufgeführten Beispiele beziehen sich auf eine einfache Testumgebung, die unter Bash mit den untenstehenden Befehlen erzeugt werden kann. Die in den Dateinamen enthaltenen Leerzeichen sollen zeigen, dass die Shell entgegen manchem Irrglauben sehr wohl mit Leerzeichen in Dateinamen zurecht kommt. Alle Kommandos in diesem Abschnitt sind mit einer Option versehen, so dass sie die Änderung nicht ausführen, sondern nur anzeigen.

> mkdir rename-test && cd rename-test && touch file" "{1,2,3}.txt

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.

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