Login
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

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