Canvieu el nom de tots els fitxers i els noms de directoris en minúscules a Linux


Al nostre article anterior, hem descrit com comptar el nombre de fitxers i subdirectoris dins d'un directori determinat. Aquesta guia us mostrarà com canviar el nom de tots els fitxers i directoris en minúscules a Linux.

Hi ha diverses maneres d'aconseguir-ho, però explicarem dos dels mètodes més eficients i fiables. Per als propòsits d'aquesta guia, hem utilitzat un directori anomenat Fitxers que té l'estructura següent:

# find Files -depth

1. Utilitzant find, xargs i canvia el nom de Commands Together

Trobeu una utilitat per canviar el nom de tots els fitxers o subdirectoris d'un directori determinat a minúscules de la següent manera:

$ find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

Explicació de les opcions utilitzades a l'ordre anterior.

  • -depth: enumera el contingut de cada directori abans del propi directori.
  • -n 1: indica als xargs que utilitzin com a màxim un argument per línia d'ordres des de la sortida de cerca.

Sortida de mostra després de canviar el nom dels fitxers i subdirectoris en minúscules al directori Fitxers.

Una altra manera alternativa d'utilitzar les ordres mv en un script tal com s'explica a continuació.

2. Ús de les ordres find i mv a Shell Script

Primer creeu el vostre script (podeu posar-li el nom que vulgueu):

$ cd ~/bin
$ vi rename-files.sh

A continuació, afegiu-hi el codi següent.

#!/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

Deseu i tanqueu el fitxer, després feu que l'script sigui executable i executeu-lo:

$ chmod +x rename-files.sh
$ rename-files.sh Files     #Specify Directory Name

També us agradaria llegir aquests articles relacionats següents.

  1. Explicació de \Tot és un fitxer i tipus de fitxers a Linux
  2. fswatch: supervisa els canvis o modificacions de fitxers i directoris a Linux
  3. Fasd: una eina de línia d'ordres que ofereix accés ràpid a fitxers i directoris
  4. FSlint: com trobar i eliminar fitxers duplicats a Linux

En aquesta guia, us vam explicar com canviar el nom de tots els fitxers i directoris en minúscules a Linux. Si teniu errors, contacteu-nos mitjançant el formulari de comentaris que trobareu a continuació. També podeu oferir-nos qualsevol altre mètode per fer el mateix.