Comment faire pour renommer tous les fichiers en minuscules?
j'ai par exemple L'arbre.wav, un.WAV. Je veux le renommer en arbre.wav, un.WAV. Comment faire pour renommer tous les fichiers en minuscules?
2 réponses
si vous êtes à l'aise avec le terminal:
- Ouvrir Un Terminal.application, tapez
cd
, puis faites glisser le Dossier contenant les fichiers à renommer dans la fenêtre. - pour confirmer que vous êtes dans le bon répertoire, tapez
ls
et appuyez sur Entrée. -
coller ce code et appuyer sur enter:
for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
- pour confirmer que tous vos fichiers sont en minuscules, tapez
ls
et appuyez sur Entrée à nouveau.
(merci à @bavarious sur twitter pour quelques corrections, et merci à John Whitley ci-dessous pour rendre cela plus sûr sur les systèmes de fichiers insensibles à la casse.)
la question telle que posée est générale, et aussi importante, donc je souhaite fournir une réponse plus générale:
le cas le plus simple (sûr la plupart du temps, et sur Mac OS X, mais lu sur):
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 (N'importe quel OS):
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 cas 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 à propos de Mac OS X:
le système de fichiers Mac est insensible à la casse, il préserve la casse.
il n'est cependant pas nécessaire de créer des fichiers temporaires, comme le suggèrent la réponse et les commentaires acceptés, parce que deux noms de fichier qui ne diffèrent que par cas ne peuvent pas exister en premier lieu, 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