Renommer tous les fichiers et noms de répertoires en minuscules sous Linux
Dans notre article précédent, nous avons décrit comment compter le nombre de fichiers et de sous-répertoires dans un répertoire donné. Ce guide vous montrera comment renommer tous les noms de fichiers et de répertoires en minuscules sous Linux.
Lire aussi : Comment connaître les principaux répertoires et fichiers (espace disque) sous Linux
Il existe plusieurs façons d’y parvenir, mais nous expliquerons deux des méthodes les plus efficaces et les plus fiables. Pour les besoins de ce guide, nous avons utilisé un répertoire nommé Files
qui a la structure suivante :
find Files -depth
1. Utiliser find, xargs et renommer les commandes ensemble
rename est un simple utilitaire de ligne de commande permettant de renommer plusieurs fichiers à la fois sous Linux. Vous pouvez l'utiliser avec l'utilitaire find pour renommer tous les fichiers ou sous-répertoires d'un répertoire particulier en minuscules comme suit :
find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
Explication des options utilisées dans la commande ci-dessus.
-profondeur
– répertorie le contenu de chaque répertoire avant le répertoire lui-même.-n 1
– demande à xargs d'utiliser au plus un argument par ligne de commande à partir de la sortie find.
Exemple de sortie après avoir renommé les fichiers et les sous-répertoires en minuscules dans le répertoire Files
.
Une autre manière alternative d'utiliser les commandes find et mv dans un script comme expliqué ci-dessous.
2. Utilisation des commandes find et mv dans le script Shell
Créez d’abord votre script (vous pouvez le nommer comme vous préférez) :
cd ~/bin
vi rename-files.sh
Ajoutez ensuite le code ci-dessous.
#!/bin/bash
#print usage
if [ -z $1 ];then
echo "Usage :$(basename $0) parent-directory"
exit 1
fi
#process all subdirectories and files in parent directory
all="$(find $1 -depth)"
for name in ${all}; do
#set new name in lower case for files and directories
new_name="$(dirname "${name}")/$(basename "${name}" | tr '[A-Z]' '[a-z]')"
#check if new name already exists
if [ "${name}" != "${new_name}" ]; then
[ ! -e "${new_name}" ] && mv -T "${name}" "${new_name}"; echo "${name} was renamed to ${new_name}" || echo "${name} wasn't renamed!"
fi
done
echo
echo
#list directories and file new names in lowercase
echo "Directories and files with new names in lowercase letters"
find $(echo $1 | tr 'A-Z' 'a-z') -depth
exit 0
Enregistrez et fermez le fichier, puis rendez le script exécutable et exécutez-le :
chmod +x rename-files.sh
rename-files.sh Files #Specify Directory Name
Vous aimerez peut-être également lire les articles connexes suivants.
- Explication de « Tout est un fichier » et types de fichiers sous Linux
- fswatch – Surveille les changements ou modifications de fichiers et de répertoires sous Linux
- Fasd – Un outil de ligne de commande qui offre un accès rapide aux fichiers et répertoires
- FSlint – Comment rechercher et supprimer les fichiers en double sous Linux
Dans ce guide, nous vous avons expliqué comment renommer tous les fichiers et répertoires en minuscules sous Linux. Si vous rencontrez des erreurs, veuillez nous contacter via le formulaire de commentaires ci-dessous. Vous pouvez également nous proposer d’autres méthodes pour faire de même.