Austrian Linux Forum

Dateien umbenennen

Kategorien: Linux How-Tos
1 Antwort
theEdge
theEdge am Samstag, 30. Oktober 2004 um 13:21
Wie bennt man eine Menge Dateien in einem Verzeichnis um? Manuell übers GUI ist es eine Qual: rechtsklick, umbenennen, usw. Bei 100 Dateien kann das schon mal lang dauern, aber wozu gibts denn die Kommandozeile :) 1. Alle Dateien finden, die jenen teil beinhalten, den wir ändern möchten [code]find . -name '*.jpg' -print[/code] Im aktuellen Verzeichnis (".") nach *.jpg suchen und ausgeben. wohin? an eine Pipe, die auf eine Schleife verweist 2. In einer Schleife die jeweils aktuell gefundene Datei einleisen: [code]while read a do[/code] Damit wird das gelesene (read) Element in a abgespeichert 3. Die Ersetzung [code]b=`echo "$a" | sed -e s/jpg/JPG/g`[/code] der Variable b wird mittels einer Kommandosubstitution (`blah`) also einem Befehl in seinem eigenen "System" der geänderte Name zugewiesen. Zu diesem Zwecke wird sed das aktuelle Befehl mittels echo übergeben und jpg durch JPG mit den Regeln der "regular Expressions" ersetzt 4. Umbenennen [code]mv "$a" "$b"[/code] Zu guter letzt die Dateien umbenennen: $a ist die Variable aus der while-Schleife, $b ist der eine Zeile vorher zugewiesene neue Dateiname 5. Der gesamte Code [code]find . -name '*.jpg' -print | while read a do b=`echo "$a" | sed -e s/jpg/JPG/g` mv "$a" "$b" done [/code] THX 2 greggae btw :)

Kommentare

greggae
greggae am Samstag, 30. Oktober 2004 um 13:21

auf systemen mit "mmv" (apt-get install mmv, sind ~40kByte)
gehts auch noch kürzer:
[code]
mmv '*.JPG' '#1.jpg'
[/code]
jeder Stern wird im "rename"-teil mit einer raute und der nummer aufgerufen, es geht also auch so ein konstrukt:
[code]
mmv "*AB*.JPG' '#2AB#1.JPG'
[/code]
Beispiel:
[code]gregi@gregi:/tmp/test$ l
ASABwD.JPG LLABPT.JPG XYABCD.JPG
gregi@gregi:/tmp/test$ mmv '*AB*.JPG' '#2AB#1.JPG'
gregi@gregi:/tmp/test$ l
CDABXY.JPG PTABLL.JPG wDABAS.JPG[/code]