Possiamo usare mv
comando per modificare il nome del file. Possiamo usarlo per cambiare anche l'estensione del file. Ma funziona solo con un singolo file e non richiede caratteri jolly.
Possiamo creare uno script di shell per modificare l'estensione di più file contemporaneamente.
Script della shell Linux per modificare l'estensione di più file
Diamo un'occhiata al codice dello script in cui utilizzeremo il comando mv in un ciclo for per modificare l'estensione di tutti i file nella directory corrente.
#!/bin/sh
#Save the file as multimove.sh
IFS=$'\n'
if [ -z "$1" ] || [ -z "$2" ]
then
echo "Usage: multimove oldExtension newExtension"
exit -1
fi
# Loop through all the files in the current directory
# having oldExtension and change it to newExtension
for oldFile in $(ls -1 *.${1})
do
# get the filename by stripping off the oldExtension
filename=`basename "${oldFile}" .${1}`
# determine the new filename by adding the newExtension
# to the filename
newFile="${filename}.${2}"
# tell the user what is happening
echo "Changing Extension \"$oldFile\" --> \"$newFile\" ."
mv "$oldFile" "$newFile"
done
Utilizzo :multimove.sh doc txt
(per cambiare tutti i .doc in .txt)
Test dello script Rename Shell
Di seguito è riportato l'output di esempio dall'esecuzione del programma sopra.
$ ls
abc.txt hi.doc journaldev.doc multimove.sh
$ ./multimove.sh doc txt
Changing Extension "hi.doc" --> "hi.txt" .
Changing Extension "journaldev.doc" --> "journaldev.txt" .
$ ls
abc.txt hi.txt journaldev.txt multimove.sh
$ ./multimove.sh txt doc
Changing Extension "abc.txt" --> "abc.doc" .
Changing Extension "hi.txt" --> "hi.doc" .
Changing Extension "journaldev.txt" --> "journaldev.doc" .
$ ls
abc.doc hi.doc journaldev.doc multimove.sh
$
Presupposti e limitazioni dello script
- I file hanno un solo punto (.)
- Scorre in loop solo tutti i file nella directory corrente. Tuttavia, puoi estenderlo per cercare i file anche nelle directory figlio.
- Gli spazi bianchi nel nome del file possono causare un problema con lo script. Ha funzionato sul mio sistema con nomi di file con spazi ma non posso garantire che funzionerà anche per te.
Ulteriori letture: Comando Linux mv