Podemos usar mv
comando para cambiar el nombre del archivo. También podemos usarlo para cambiar la extensión del archivo. Pero funciona con un solo archivo y no acepta caracteres comodín.
Podemos crear un script de shell para cambiar la extensión de varios archivos a la vez.
Linux Shell Script para cambiar la extensión de varios archivos
Veamos el código del script donde usaremos el comando mv en un bucle for para cambiar la extensión de todos los archivos en el directorio actual.
#!/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
Uso :multimove.sh doc txt
(para cambiar todo .doc a .txt)
Prueba de la secuencia de comandos Rename Shell
A continuación se muestra el resultado de muestra de la ejecución del programa anterior.
$ 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
$
Supuestos y limitaciones del script
- Los archivos tienen solo un punto (.)
- Recorre todos los archivos del directorio actual únicamente. Sin embargo, también puede ampliarlo para buscar archivos en los directorios secundarios.
- Los espacios en blanco en el nombre del archivo pueden causar un problema con el script. Ha funcionado en mi sistema con nombres de archivos que tienen espacios, pero no puedo garantizar que funcione para usted también.
Lecturas adicionales: Comando mv de Linux