Ich habe zum Beispiel TREE.wav, ONE.WAV. Ich möchte es in tree.wav umbenennen, one.wav. Wie benenne ich alle Dateien in Kleinbuchstaben um?
Wenn Sie mit dem Terminal zufrieden sind:
cd
ein und ziehen Sie den Ordner mit den umzubenennenden Dateien in das Fenster.ls
ein und drücken Sie die Eingabetaste.Fügen Sie diesen Code ein und drücken Sie die Eingabetaste:
for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
ls
ein, und drücken Sie erneut die Eingabetaste.(Vielen Dank an @bavarious auf Twitter für ein paar Korrekturen und John Whitley, der dies für sicherere Dateisysteme ohne Berücksichtigung der Groß- und Kleinschreibung gemacht hat.)
Die gestellte Frage ist allgemein und auch wichtig, daher möchte ich eine allgemeinere Antwort geben:
Einfachster Fall (meistens sicher und unter Mac OS X, aber lesen Sie weiter):
for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; mv "$i" "$j" ; done
Sie müssen auch Leerzeichen in Dateinamen (jedes Betriebssystem) behandeln:
IFS=$'\n' ; for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; mv "$i" "$j" ; done
Sie müssen sicher mit Dateinamen umgehen, die sich in einem von Groß- und Kleinschreibung abhängigen Dateisystem nur von Fall zu Fall unterscheiden und das Ziel (z. B. Linux) nicht überschreiben:
for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; [ -e "$j" ] && continue ; mv "$i" "$j" ; done
Hinweis zu Mac OS X:
Das Dateisystem von Mac unterscheidet nicht zwischen Groß- und Kleinschreibung.
Es ist jedoch nicht erforderlich, temporäre Dateien zu erstellen, wie in der akzeptierten Antwort und in den Kommentaren vorgeschlagen, da zwei Dateinamen, die sich nur von Fall zu Fall unterscheiden, zunächst nicht existieren können, ref .
Um dies zu zeigen:
$ mkdir test
$ cd test
$ touch X x
$ ls -l
total 0
-rw-r--r-- 1 alexharvey wheel 0 26 Sep 20:20 X
$ mv X x
$ ls -l
total 0
-rw-r--r-- 1 alexharvey wheel 0 26 Sep 20:20 x