#! /bin/bash
#
# Change chaque nom de fichier en minuscules dans le répertoire courant.
#
#  Inspiré par un script de John Dubois,
#+ qui fut traduit en Bash par Chet Ramey,
#+ et considérablement simplifié par l'auteur du guide ABS.


for nomfichier in *             # Parcourt tous les fichiers du répertoire.
do
   nomF=`basename $nomfichier`
   n=`echo $nomF | tr A-Z a-z`  # Change le nom en minuscule.
   if [ "$nomF" != "$n" ]       #  Renomme seulement les fichiers qui ne sont
                                #+ pas en minuscules.
   then
     mv $nomF $n
   fi  
done   

exit $?


# Le code en dessous ne s'exécutera pas à cause de la commande exit ci-dessus
#-----------------------------------------------------------------------------#
# Pour le lancer, effacez la ligne de script ci dessus.

#  Le script suivant ne fonctionnera pas sur les fichiers dont le nom a des
#+ espaces ou des caractères de saut de ligne.

# Stephane Chazelas suggère donc l'alternative suivante :


for nomfichier in *  # Pas nécessaire d'utiliser basename,
                     # car "*" ne retourne aucun fichier contenant "/".
do n=`echo "$nomfichier/" | tr '[:upper:]' '[:lower:]'`
#                             Jeu de notation POSIX.
#                    Le slash est ajouté, comme ça les saut de lignes ne sont
#                    pas supprimés par la substition de commande.
   # Substitution de variable :
   n=${n%/}          #  Supprime le slash de fin, rajouté au dessus, du nom de
                     #+ fichier.
   [[ $nomfichier == $n ]] || mv "$nomfichier" "$n"
                     # Vérifie si le nom de fichier est déjà en minuscules.
done

exit $?
