Wir können mv
verwenden Befehl zum Ändern des Dateinamens. Wir können damit auch die Dateierweiterung ändern. Aber es funktioniert nur mit einer einzigen Datei und akzeptiert keine Wildzeichen.
Wir können ein Shell-Skript erstellen, um die Erweiterung mehrerer Dateien gleichzeitig zu ändern.
Linux-Shell-Skript zum Ändern der Erweiterung mehrerer Dateien
Schauen wir uns den Skriptcode an, in dem wir den mv-Befehl in einer for-Schleife verwenden, um die Erweiterung aller Dateien im aktuellen Verzeichnis zu ändern.
#!/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
Verwendung :multimove.sh doc txt
(um alle .doc in .txt zu ändern)
Testen des Umbenennungs-Shell-Skripts
Unten ist die Beispielausgabe der obigen Programmausführung.
$ 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
$
Skriptannahmen und -beschränkungen
- Die Dateien haben nur einen Punkt (.)
- Es durchläuft nur alle Dateien im aktuellen Verzeichnis. Sie können es jedoch erweitern, um auch in den untergeordneten Verzeichnissen nach Dateien zu suchen.
- Leerzeichen im Dateinamen können ein Problem mit dem Skript verursachen. Es hat auf meinem System mit Dateinamen mit Leerzeichen funktioniert, aber ich kann nicht garantieren, dass es auch bei Ihnen funktioniert.
Weiterführende Literatur: Linux-mv-Befehl