J'ai un répertoire et certaines extensions des fichiers sont en majuscules (.JPG) au lieu de minuscules.
Je veux m'assurer que chaque fichier a l'extension .jpg. Comment pourrais-je faire cela à partir d'une invite du shell?
J'ai un répertoire et certaines extensions des fichiers sont en majuscules (.JPG) au lieu de minuscules.
Je veux m'assurer que chaque fichier a l'extension .jpg. Comment pourrais-je faire cela à partir d'une invite du shell?
Réponses:
Utilisation de l' extension des paramètres du shell :
for f in *.JPG; do
mv "${f}" "${f%%.JPG}.jpg"
done
Les "
personnages prendront soin des noms de fichiers contenant des espaces, comme le font souvent les photographies.
/path/to/*.JPG
. Vous êtes invités à soumettre votre propre réponse, bien sûr :)
Si vous pouvez utiliser des outils externes (pas seulement bash), vérifiez la rename
commande!
rename .JPG .jpg *
Le rename
fait partie de util-linux
.
perl
accepte différents arguments pour faire la même chose.
Je suggère de jeter un œil à la mmv
commande. Il convient parfaitement à ce type de tâches. Dans votre scénario, ce serait:
#> mmv "*.JPG" "#1.jpg"
La page de manuel regorge d'exemples, il ne faut donc pas de temps pour s'y habituer.
Sur les systèmes Debian , il peut être installé avec:
#> aptitude install mmv
si vous n'avez pas d'espace dans les noms de fichiers:
for f in *.JPG; do mv $f `echo $f | sed 's/JPG$/jpg/'`; done
mv
.