J'ai par exemple TREE.wav, ONE.WAV. Je veux le renommer en tree.wav, one.wav. Comment renommer tous les fichiers en minuscules?
J'ai par exemple TREE.wav, ONE.WAV. Je veux le renommer en tree.wav, one.wav. Comment renommer tous les fichiers en minuscules?
Réponses:
Si vous êtes à l'aise avec le terminal:
cd
puis faites glisser et déposez 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 correctifs, et merci à John Whitley ci-dessous pour avoir rendu cela plus sûr sur les systèmes de fichiers insensibles à la casse.)
foo.txt
et FOO.TXT
, cela pourrait écraser l'un d'entre eux.
mv "$f" "${f,,}"
declare -l g=$f; mv "$f" "$g"
for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
La question telle que posée est générale, et également importante, je souhaite donc fournir une réponse plus générale:
Cas le plus simple (sûr la plupart du temps, et sur Mac OS X, mais lisez la suite):
for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; mv "$i" "$j" ; done
Vous devez également gérer les espaces dans les noms de fichiers (n'importe quel système d'exploitation):
IFS=$'\n' ; for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; 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=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; [ -e "$j" ] && continue ; mv "$i" "$j" ; done
Remarque sur Mac OS X:
Le système de fichiers de Mac est insensible à la casse, préservant la casse.
Il n'est cependant pas nécessaire de créer des fichiers temporaires, comme suggéré dans la réponse et les commentaires acceptés, car deux noms de fichiers qui ne diffèrent que par cas ne peuvent pas exister en premier lieu, réf .
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