Die Gedanken sind frei…

Umbenennen einer Dateinamensliste

(Umsetzung unter Linux/bash)

Problem:
Eine längere Liste mit Dateinamen der Art Kategorie1_Kategorie2_Kategorie3_Dateiname.txt soll jeweils in Dateiname.txt umbenannt werden.

Eine manuelle Umsetzung würde Stunden brauchen.

Lösung:
Man lässt eine kleine for-Schleife drüber laufen welche die Kategorien mittels pattern matching entfernt.

Die bash bringt die entsprechende Funktionalität schon mit, so dass es recht simpel umzusetzen ist:

for i in ls; do mv $i ${i##*_};done

Erklärung:
for i in ls; # Für jedes Vorkommen i in der Ausgabe des Kommandos ls,
do mv $i ${i##*_};# umbenennen des ursprünglichen Dateinamens $i in eine Variante bei der alle Segmente in i bis zum letzten “_” von links entfernt sind
done # Abschluss der for-Schleife

Beispiele:
${i##*_}alle Bestandteile bis incl. dem letzten _ von links werden entfernt: Dateiname.txt

${i#*_}alle Bestandteile bis incl. dem ersten _ von links werden entfernt: Kategorie2_Kategorie3_Dateiname.txt

${i%%_*}alle Bestandteile bis incl. dem letzten _ von rechts werden entfernt: Kategorie1

${i%.*} alle Bestandteile bis incl. dem ersten . von rechts werden entfernt: Kategorie1_Kategorie2_Kategorie3_Dateiname

Mehr Informationen dazu findet man im bash manual bash manual.

Posted in IT

Add Your Comment

* Indicates Required Field

Your email address will not be published.

*