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. Usa trova, xargs e rinomina i comandi insieme
rename è una semplice utility da riga di comando per rinominare più file contemporaneamente in Linux. Puoi usarlo insieme all'utilità trova 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 i contenuti di ciascuna directory prima della directory stessa.-n 1
– istruisce xargs per utilizzare al massimo un argomento per riga di comando da trova uscita.
Esempio di output dopo aver rinominato file e sottodirectory in minuscolo in Files
directory.
Un altro modo alternativo per usare i comandi find e mv in uno script come spiegato di seguito.
2. Utilizzo dei comandi trova e mv nello script della shell
Per prima cosa crea il tuo script (puoi nominarlo 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
Salva e chiudi il file, quindi rendi eseguibile lo script ed eseguilo:
$ chmod +x rename-files.sh $ rename-files.sh Files #Specify Directory Name
Potresti anche voler leggere questi seguenti articoli correlati.
- Spiegazione di "Tutto è un file" e tipi di file in Linux
- fswatch – Monitora i file e le modifiche o le modifiche alle directory in Linux
- Fasd:uno strumento a riga di comando che offre un accesso rapido a file e directory
- 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. In caso di errori, contattaci tramite il modulo di feedback qui sotto. Puoi anche offrirci qualsiasi altro metodo per fare lo stesso.