Recherche de site Web

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.

  1. Explication de « Tout est un fichier » et types de fichiers sous Linux
  2. fswatch – Surveille les changements ou modifications de fichiers et de répertoires sous Linux
  3. Fasd – Un outil de ligne de commande qui offre un accès rapide aux fichiers et répertoires
  4. 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.