Ricerca nel sito web

Rinomina tutti i nomi di file e directory in minuscolo in Linux


Nel nostro articolo precedente, abbiamo descritto come contare il numero di file e sottodirectory all'interno di una determinata directory. Questa guida ti mostrerà come rinominare tutti i nomi di file e directory in minuscolo in Linux.

Leggi anche: Come scoprire le directory e i file principali (spazio su disco) in Linux

Esistono diversi modi per raggiungere questo obiettivo, ma spiegheremo due dei metodi più efficienti e affidabili. Ai fini di questa guida, abbiamo utilizzato una directory denominata Files che ha la seguente struttura:

find Files -depth

1. Utilizzando i comandi find, xargs e rinomina insieme

rename è una semplice utility da riga di comando per rinominare più file contemporaneamente in Linux. Puoi usarlo insieme all'utilità find per rinominare tutti i file o le sottodirectory in una particolare directory in minuscolo come segue:

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

Spiegazione delle opzioni utilizzate nel comando precedente.

  • -depth – elenca il contenuto di ciascuna directory prima della directory stessa.
  • -n 1 – indica a xargs di utilizzare al massimo un argomento per riga di comando dall'output di find.

Output di esempio dopo aver rinominato file e sottodirectory in minuscolo nella directory Files.

Un altro modo alternativo di utilizzare i comandi find e mv in uno script come spiegato di seguito.

2. Utilizzo dei comandi find e mv nello script di shell

Per prima cosa crea il tuo script (puoi chiamarlo come preferisci):

cd ~/bin
vi rename-files.sh

Quindi aggiungi il codice qui sotto.

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

Salvare e chiudere il file, quindi rendere eseguibile lo script ed eseguirlo:

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

Potrebbe interessarti anche leggere i seguenti articoli correlati.

  1. Spiegazione di "Tutto è un file" e tipi di file in Linux
  2. fswatch: monitora i cambiamenti o le modifiche di file e directory in Linux
  3. Fasd: uno strumento da riga di comando che offre accesso rapido a file e directory
  4. FSlint – Come trovare e rimuovere file duplicati in Linux

In questa guida, ti abbiamo spiegato come rinominare tutti i file e le directory in minuscolo in Linux. Se riscontri errori, contattaci tramite il modulo di feedback sottostante. Puoi anche offrirci qualsiasi altro metodo per fare lo stesso.