GNU/Linux >> Linux の 問題 >  >> Linux

Linuxは複数のファイル拡張子の名前を変更します

mvを使用できます ファイル名を変更するコマンド。これを使用して、ファイル拡張子を変更することもできます。ただし、1つのファイルでのみ機能し、ワイルド文字は使用しません。

複数のファイルの拡張子を一度に変更するシェルスクリプトを作成できます。

複数のファイルの拡張子を変更するLinuxシェルスクリプト

forループでmvコマンドを使用して、現在のディレクトリ内のすべてのファイルの拡張子を変更するスクリプトコードを見てみましょう。

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

使用法multimove.sh doc txt (すべての.docを.txtに変更するため)

名前変更シェルスクリプトのテスト

以下は、上記のプログラム実行からの出力例です。

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

スクリプトの前提と制限

  1. ファイルのピリオドは1つだけです(。)
  2. 現在のディレクトリ内のすべてのファイルのみをループします。ただし、これを拡張して、子ディレクトリ内のファイルを検索することもできます。
  3. ファイル名に空白があると、スクリプトで問題が発生する可能性があります。スペースを含むファイル名で私のシステムで機能しましたが、あなたにも機能することを保証することはできません。

参考資料: Linuxmvコマンド


Linux
  1. Linuxでファイルの名前を変更する方法

  2. Linuxで一度に複数のファイルの名前を変更する方法

  3. 3 つの方法を使用して Linux で複数のファイルの名前をまとめて変更する方法

  1. Linux で複数のファイルを見つけて名前を変更する

  2. Linux / Unixで複数のファイルの名前をある拡張子から別の拡張子に変更する方法は?

  3. Linux でファイル名を大文字に変更

  1. Linuxで複数のファイルを圧縮する方法

  2. 複数のファイルの拡張子を変更するにはどうすればよいですか?

  3. Linuxでファイルの名前を再帰的に変更する(拡張子を変更する)