Nous pouvons utiliser mv
commande pour changer le nom du fichier. Nous pouvons également l'utiliser pour modifier l'extension du fichier. Mais cela ne fonctionne qu'avec un seul fichier et ne prend pas de caractères génériques.
Nous pouvons créer un script shell pour modifier l'extension de plusieurs fichiers à la fois.
Script Shell Linux pour modifier l'extension de plusieurs fichiers
Regardons le code du script où nous utiliserons la commande mv dans une boucle for pour changer l'extension de tous les fichiers du répertoire courant.
#!/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
Utilisation :multimove.sh doc txt
(pour changer tous les .doc en .txt)
Test du script Shell de renommage
Vous trouverez ci-dessous l'exemple de sortie de l'exécution du programme ci-dessus.
$ 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
$
Hypothèses et limites du script
- Les fichiers n'ont qu'un seul point (.)
- Il parcourt tous les fichiers du répertoire en cours uniquement. Cependant, vous pouvez l'étendre pour rechercher également des fichiers dans les répertoires enfants.
- Les espaces blancs dans le nom du fichier peuvent causer un problème avec le script. Cela a fonctionné sur mon système avec des noms de fichiers comportant des espaces, mais je ne peux pas garantir que cela fonctionnera également pour vous.
Lectures complémentaires : Commande Linux mv