GNU/Linux >> Znalost Linux >  >> Linux

Linux Rename Multiple Files Extension

Můžeme použít mv příkaz pro změnu názvu souboru. Můžeme jej také použít ke změně přípony souboru. Funguje však pouze s jedním souborem a nepoužívá zástupné znaky.

Můžeme vytvořit shell skript pro změnu přípony více souborů najednou.

Linux Shell Script pro změnu rozšíření více souborů

Podívejme se na kód skriptu, kde použijeme příkaz mv ve smyčce for ke změně přípony všech souborů v aktuálním adresáři.

#!/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

Využití :multimove.sh doc txt (pro změnu všech .doc na .txt)

Testování skriptu Rename Shell

Níže je ukázkový výstup z výše uvedeného spuštění programu.

$ 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
$ 

Předpoklady a omezení skriptů

  1. Soubory mají pouze jednu tečku (.)
  2. Prochází všechny soubory pouze v aktuálním adresáři. Můžete jej však rozšířit, aby vyhledával soubory také v podřízených adresářích.
  3. Bílé mezery v názvu souboru mohou způsobit problém se skriptem. V mém systému to fungovalo s názvy souborů s mezerami, ale nemohu zaručit, že to bude fungovat i vám.

Další četby: Linux mv příkaz


Linux
  1. Jak komprimovat více souborů v systému Linux

  2. Jak přejmenovat více souborů pomocí funkce Najít?

  3. Jak přejmenovat více souborů najednou v Linuxu

  1. Jak přejmenovat více souborů dohromady v Linuxu pomocí 3 metod

  2. Odstranění části názvu souboru pro více souborů v systému Linux

  3. Najděte více souborů a přejmenujte je v Linuxu

  1. Jak přejmenovat více souborů z jedné přípony na druhou v Linuxu / Unixu?

  2. Linux přejmenovává soubory na velká písmena

  3. Rekurzivně přejmenovávat soubory (změnit příponu) v Linuxu