J'ai par exemple TREE.wav, ONE.WAV. Je veux le renommer en tree.wav, one.wav. Comment renommer tous les fichiers en minuscule?
Si vous êtes à l'aise avec le terminal:
cd
, puis faites glisser le dossier contenant les fichiers à renommer dans la fenêtre.ls
et appuyez sur Entrée.Collez ce code et appuyez sur Entrée:
for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
ls
et appuyez à nouveau sur Entrée.(Merci à @bavarious sur Twitter pour quelques corrections, et à John Whitley ci-dessous pour avoir rendu ce système plus sûr pour les systèmes de fichiers insensibles à la casse.)
La question posée est à la fois générale et importante. Je souhaite donc donner une réponse plus générale:
Cas le plus simple (sûr la plupart du temps, et sur Mac OS X, mais continuez à lire):
for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; mv "$i" "$j" ; done
Vous devez également gérer les espaces dans les noms de fichiers (tous les systèmes d'exploitation):
IFS=$'\n' ; for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; mv "$i" "$j" ; done
Vous devez gérer en toute sécurité les noms de fichiers qui ne diffèrent que par la casse dans un système de fichiers sensible à la casse et ne pas écraser la cible (par exemple, Linux):
for i in * ; do j=$(echo "$i" | tr '[:upper:]' '[:lower:]') ; [ -e "$j" ] && continue ; mv "$i" "$j" ; done
Note sur Mac OS X:
Le système de fichiers Mac est insensible à la casse et le préserve.
Il n'est toutefois pas nécessaire de créer des fichiers temporaires, comme le suggèrent la réponse acceptée et les commentaires, car deux noms de fichiers ne différant que par les cas ne peuvent pas exister, ref .
Pour montrer ceci:
$ 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