Renommer le nom des fichiers en minuscule sous Linux
Voici deux commandes bash dont je me sers régulièrement. Ces dernières permettent de renommer le nom des fichiers en minuscule et de transformer les espaces en tirets. Cela permet au final d'avoir des noms un peu plus standards, surtout quand les fichiers sont destinés à être mis en ligne sur Internet.
Pour qu'elles fonctionnent, il vous suffit d'ouvrir un terminal et de vous positionner dans le répertoire contenant les fichiers. Attention tout de même, les commandes ci-dessous ne sont pas capables de prendre en charge les sous-répertoires.
Voici la commande pour renommer le nom des fichiers en minuscule :
for i in *; do mv "$i" "$(echo $i | tr A-Z a-z)"; done
Et enfin, celle pour convertir les espaces en tirets :
for i in *; do mv "$i" "$(echo $i | tr " " "-")"; done
10 Commentaires pour "Renommer le nom des fichiers en minuscule sous Linux"
Flux des commentaires de cet article Ajouter un commentaireHello pour ce qui cherche a faire de façon récursive voici les commandes
Pour les fichiers des sous répertoire
for i in `find -type f`; do mv "$i" "$(echo $i | tr A-Z a-z)"; done
ou alors pour les répertoires:
for i in `find -type d`; do mv "$i" "$(echo $i | tr A-Z a-z)"; done
Vous pouvez adapter la commande $(echo $i ...) pour les espaces
Sa pique les yeux les boucle....
(En Récursif) find ./ -type f -exec rename 'y/A-Z/a-z/' {} \;
----------------
Ou pas !
Inspiré de Noxis, pour les espaces:
J'ai pas été cherché loin^^
Je connaissais déjà, mais avec une boucle, c'est en effet plus beau comme ça, thanks =)
@Noxis @Gardouille : pas mal comme commandes !
Pour les espaces et les majuscules:
rename 'y/[A-Z ]/[a-z_]/' *
Pour le tr, ça :
tr '[A-Z ]' '[a-z_]
Fera également les espaces et les majuscules.
J'ai aussi un script nautilus:
#!/bin/bash
find | while read FN;do mv "$FN" "`echo $FN | sed -e 's/ /_/g'`";done
Ensuite, sélection de fichier/dossier, clic droit/script/supprimer_espace et hop pu d'espace.
J'ai oublié le plus important!!!
J'ADORE l'image :p
I AM LINUXXX
ps:si vous avez des idées pour améliorer/simplifier mon script nautilus =)
on peut faire aussi comme ca :
#!/bin/bash
for i in LEDOSSIER ; do new=`echo $i | tr "[:upper:]" "[:lower:]"`; echo "transform $i in $new"; mv $i $new ; done
bonjour,je suis un débutant dans le monde linux ,,i've two problems :
1-j'avais le shell bash(par defaut) j'ai voulu essayé la commande "chsh" pour voir la différence entre les shelle---->>l'hécatombe,heureusement que c'etait sur le virtual box,,,j'ai été obligé de créer une autre machine virtuelle(en attendant d'avoir une solution pour l'autre)sinon je sais aussi comment creer une machine virtuelle mais je sais pas comment la supprimer,,,
2-je veux ecrire une commande qui affiche de façon décroissante les longueurs de chaque mot dans une phrase et après dans un texte(ce serait génial si je pouvais utiliser la commande cut mais de façon récursive,,,unfortunatly j'ai essayer avec cut -R /cut -r mais ça donne rien...)
Merci d'excuser mon ignorance,hope to hear from you soon!!
:p
Franchement si tu fais un find, y a quand meme plus pratique pour changer tout les noms :
find . -type f -exec sed 's/\t/-/'
pour changer les espaces en - par exemple
ENJOY !!!