Vor zwei Monaten hatte ich kurz zwei Methoden abseits grafischer Programme vorgestellt, wie man mit Hilfe der Bash und dem Texteditor VIM mehrere Dateien umbenennen kann. Als ich wenige Wochen später mit einem Freund über das gleiche Thema sprach und dabei die eher ungewöhnliche VIM Methode vorstellte, musste ich mir sagen lassen: "Mit einem Texteditor? Das ist ja umständlich. Warum hast du nicht sed benutzt?" 😐 Pah, gibt es denn keine Sonderpunkte mehr für kreative Lösungen. 😉
Mein Ziel mit der Kategorie "Leben auf der Konsole" ist weniger, Abhandlungen über Programmiersprachen und gute Praxistipps für Systemadministratoren zu schreiben. Ich glaube letztere würden sich sowieso langweilen, während andere alle Vorurteile über den typischen Linuxnutzer bestätigt sähen. Ich widme dem Ganzen trotzdem gerne ab und zu meine Aufmerksamkeit, weil sehr viele Probleme sich mit Linux auf unterschiedliche Weise schon von Haus aus lösen lassen. Außerdem habe ich mit der Zeit festgestellt, dass einfache Lösungen, Eleganz und Effektivität sich bei Konsolenanwendungen nicht zwangsläufig ausschließen müssen, eher das Gegenteil ist der Fall.
Bei GNU sed verhält es sich ähnlich. Es gibt schon tonnenweise gute Informationen im Internet. Als Lektüre empfehle ich z.B. sed, awk und reguläre Ausdrücke.
Um das alte Beispiel mit dem Umwandeln von Groß- in Kleinschreibung aufzugreifen, das lässt sich mit sed so lösen:
Als Testlauf
for DATEI in *.jpg ; do NEUEDATEI=`echo $DATEI | sed -e 's/(.*)/L1/'` ; echo "$DATEI wird umbenannt in $NEUEDATEI" ; done
Und so gehts richtig
for DATEI in *.jpg ; do NEUEDATEI=`echo $DATEI | sed -e 's/(.*)/L1/'` ; mv "$DATEI" $NEUEDATEI ; done
Mehr Beispiele gibt es auch hier und hier. Wie der letzte Link zeigt, gibt es tatsächlich mehr als nur eine Möglichkeit Dateinamen von Groß- nach Kleinschreibung oder umgekehrt zu ändern.
Jeder kann nun für sich entscheiden, ob die VIM-Methode oder sed einfacher war. Bei wenigen Dateien verschwende ich auf so etwas sowieso keine Anstrengungen und ändere es schnell per Hand. Wenn aber Tausende von Dateien geändert werden müssen, lohnt sich der Blick auf sed und eine simple Schleifenkonstruktion.
In meinem alten Beitrag hat andre noch auf ein kleines Skript namens vils hingewiesen, welches es auch direkt für Arch Linux in AUR und für FreeBSD oder direkt als Download zu geben scheint. Ruft man vils auf, werden automatisch alle Dateinamen in einem Verzeichnis im Editor der Wahl angezeigt. Dort können sie verändert werden und werden nach dem Abspeichern im Editor exakt so umbenannt. Das Skript nimmt einem also das ls | vim -
und das Hinzufügen von Shell Befehlen wie mv innerhalb von vim ab. Leider scheint es nur für die zsh Shell zu funktionieren, ist aber eine praktische Sache, wenn man oft Dateien umändern muss und dafür gerne einen vielseitigen Texteditor wie Vim benutzt.
Fazit: Es gibt wie so oft immer mehr als eine Lösung für das gleiche Problem.