Linuxで一度に複数のファイルの名前を変更する方法
Linuxで複数のファイルの名前を変更する ファイルの名前を一括変更するには、mv
コマンドと少しのBashスクリプトを使用するか、mmv
とrename
ユーティリティを使用します。 このガイドでは、Linuxコマンドラインから一度に複数のファイルの名前を変更するためのさまざまな例を示します。
mvを使用して複数のファイルの名前を変更
mv
コマンドはLinuxのデフォルトの部分であり、複数のファイルの名前を変更するために使用できますが、ジョブを実行するには少しスクリプトが必要です。 いくつかの例は、次のような他のデフォルトのLinuxユーティリls
, find
, xargs
, など。
例1. すべてのファイル名を小文字に変更します。
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'A-Z' 'a-z'`"; done
例2. すべてのファイル名を大文字に変更します。
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'a-z' 'A-Z'`"; done
例3. すべてのファイル拡張子を.jpeg
から.jpg
に変更します。
$ for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
例4. すべてのファイルから.bak
ファイル拡張子を削除します。
$ for f in `ls *.bak`; do mv $f ${f%.*}; done
例5. すべてのファイルに.bak
ファイル拡張子を追加します。
$ for f in `ls`; do mv $f $f.bak; done
例6. すべてのファイルに”_backup”を追加するには、xargs
を使用します。
$ ls * | xargs -I{} mv {} {}_backup
例7。 すべてのファイルを小文字に変更するには、find
、sed
、およびmv
コマンドを使用します。
$ find . -maxdepth 1 -type f -name '**'|sed -n 's/\(.*\/\)\(.*\)/mv -n -v -T \L/p'|sh
例8. find -exec
およびmv
コマンドを使用して、.log
拡張子で終わるすべてのファイルに”_backup”を追加します。
$ find . -type f -name "*.log" -exec mv {} {}_backup \;
例9. 前の例と同様ですが、findの-exec
オプションをxargs
に置き換えて、.log
拡張子で終わるすべてのファイルに”_backup”を追加します。
$ find . -type f -name '*log' -print0 | xargs --null -I{} mv {} {}_backup
例10. mv
とsed
を使用して、すべてのファイルのパターンを置き換えます。 これにより、すべての.jpg
ファイルの”IMG”が”Vacation”に置き換えられます。
$ for f in *.jpg; do mv "$f" "`echo "$f" | sed s/IMG/Vacation/`"; done
例11. 現在のタイムスタンプを.log
で終わるすべてのファイルに追加します。 これにより、access.log
などのファイルがaccess_20210418040151.log
に変更されます。
$ for f in *.log; do mv "$f" "${f%.log}"_`date +%Y%m%d%H%M%S`.log; done
Rename
で複数のファイルの名前を変更するrenameユーティリティは、一括名前変更タスクを少し簡単にしますが、ユーティリティは常にデフォルトでイ 以下の適切なコマンドを使用して、システムのパッケージマネージャーと一緒にインストールします。
:
$ sudo apt install rename
Fedora、AlmaLinux、CentOS、およびRHEL:
$ sudo dnf install prename
Arch LinuxとManjaro:
$ sudo pacman -S perl-rename
rename
コマンドで-n
オプションを使用します。例1. すべてのファイル名を小文字に変更します。
$ rename 'y/A-Z/a-z/' *
例2. すべてのファイル名を大文字に変更します。
$ rename 'y/a-z/A-Z/' *
例3. すべてのファイルから.bak
拡張子を削除します。
$ rename 's/\.bak$//' *.bak
例4. すべての.jpeg
ファイルの拡張子を.jpg
に変更します。
$ rename 's/\.jpeg/\.jpg/' *.jpeg
例5. すべてのファイルの大文字の拡張子.JPG
を小文字の.jpg
に変更します。
$ rename 's/\.JPG/\.jpg/' *.JPG
例6. すべてのファイル名から空白を削除します。
$ rename "s/ *//g" *
例7。 すべてのファイル名の空白をアンダースコアに置き換えます。
$ rename 's/\s+/_/g' *
例8. すべてのファイル名の最初の文字を大文字にします。
$ rename 's/\b(\w)/\U/g' *
例9. すべてのファイル名のパターンを置き換えます。 このコマンドは、すべての.jpg
ファイルの”IMG”を”Vacation”に置き換えます。
$ rename 's/IMG/Vacation/' *.jpg
例10. ファイル名の一部を削除します。 このコマンドは、すべての.jpg
ファイルから”IMG_”を削除します。
$ rename 's/IMG_//' *.jpg
例11. すべてのファイルに.bak
拡張子を追加します。
$ rename 's/(.*)/.bak/' *
mmvで複数のファイルの名前を変更
mmvユーティリティは、すべてのファイルに文字列を削除したり追加したり、ファイル名の一部を並べ替えたりするなど、パターンに基づいてファイルの名前を変更するのに優れています。 通常、デフォルトではインストールされませんが、以下の適切なコマンドを使用して、システムのパッケージマネージャーでmmvをインストールできます。
:
$ sudo apt install mmv
Fedora、AlmaLinux、CentOS、およびRHEL:
$ sudo dnf install mmv
Arch LinuxとManjaro(AURからインストール):
$ git clone https://aur.archlinux.org/mmv.git$ cd mmv/$ makepkg -si
mmv
コマンドで-n
オプションを使用します。例1. すべての.jpeg
ファイルの拡張子を.jpg
に変更します。
$ mmv '*.jpeg' '#1.jpg'
例2. すべてのファイル名を小文字に変更します。
$ mmv '*' '#l1'
例3. すべてのファイル名を大文字に変更します。
$ mmv '*' '#u1'
例4. ファイル名の一部を再配置します。 このコマンドは、パターンSong-Artist.mp3
の音楽ファイルをArtist-Song.mp3
に変更します。
$ mmv '*-*.mp3' '#2-#1.mp3'
例5. すべてのファイル名で”IMG”の最初の出現を”Vacation”に置き換えます。
$ mmv '*IMG*' '#1Vacation#2'
例6. すべてのファイル名に接頭辞を追加します。 このコマンドは、すべての.log
ファイルの先頭に”backup_”を追加します。
$ mmv '*.log' 'backup_#1.log'
例7。 すべてのファイル名に接尾辞を追加します。 このコマンドは、すべての.log
ファイルに”_backup”を追加します。
$ mmv '*.log' '#1.log_backup'
例8. すべての.jpg
ファイルから”IMG_”接頭辞を削除します。
$ mmv 'IMG_*.jpg' '#1'
例9. すべてのファイルから”_old”接尾辞を削除します。
$ mmv '*_old' '#1'
GUI経由でファイル名を一括変更
コマンドラインが実際にはあなたのものではない場合、GUI経由で複数のファイルの名前を一度に変更すること 仕事をするのに最適なツールの1つは、Thunarに付属の一括名前変更アプリケーションです。
ThunarはXfceのデフォルトのファイルブラウザですが、使用しているデスクトップ環境に関係なくインストールできます。 すでにXfceまたはThunarを使用している場合、Bulk Renameはすでにシステムの一部です。 それ以外の場合は、以下の適切なコマンドを使用して、システムのパッケージマネージャーと一緒にインストールします。
:
$ sudo apt install thunar
Fedora、AlmaLinux、CentOS、およびRHEL:
$ sudo dnf install thunar
Arch LinuxとManjaro:
$ sudo pacman -S thunar
ステップ1. Thunarがインストールされたら、Bulk Renameユーティリティを検索して開きます。
ステップ2。 名前を変更するファイルを追加するには、プラス記号をクリックします。
ステップ3. オプションのリストから、ファイルで何をしたいかを選択します。 すべてを大文字または小文字に変更したり、日付と時刻を追加したり、特定の位置にテキストを挿入したり、自動番号付けを追加したり、文字を置換したり、ファイル名の特定のパターンを検索したり置換したりすることができます。 以下の例では、すべてのファイルに.txt
ファイル拡張子を追加しました。
ステップ4。 「新しい名前」列でプレビューされた名前の変更に満足したら、「ファイルの名前を変更」をクリックして一括名前変更を実行します。
WSL上の複数のファイルの名前変更
Linux用Windows Subsystemを使用している場合、上記のコマンド、特にファイルを小文字 Windowsでは大文字と小文字が区別されないため、File.txt
、file.txt
、およびFILE.txt
はすべて同じファイルであると見なされます。
FILE.txt
の名前をfile.txt
に変更しようとすると、ファイルが既に存在するというエラーが表示されます。 この問題を回避するには、次のいずれかの例を使用します。
例1. すべてのファイルの大文字の拡張子.JPG
を小文字の.jpg
に変更します(既定のユーティリティを使用)。
$ for f in *.JPG; do mv "$f" "${f%.JPG}.jpgaux"; done && for f in *.jpgaux; do mv "$f" "${f%.jpgaux}.jpg"; done
例2. すべてのファイルの大文字の拡張子.JPG
を小文字の.jpg
に変更します(renameユーティリティを使用)。
$ rename 's/\.JPG$/\.jpgaux/' *.JPG && rename 's/\.jpgaux$/\.jpg/' *.jpgaux
例3. すべてのファイルの大文字の拡張子.JPG
を小文字の.jpg
に変更します(mmvユーティリティを使用)。
$ mmv '*.JPG' '#1.jpgaux' && mmv '*.jpgaux' '#1.jpg'
例4. すべてのファイル名を小文字に変更します(既定のユーティリティを使用)。
$ for f in `ls | grep `; do mv "$f" "`echo $f.aux | tr 'A-Z' 'a-z'`"; done && for f in `ls *.aux`; do mv $f ${f%.*}; done
例5. すべてのファイル名を小文字に変更します(mmvユーティリティを使用)。
$ mmv '*' '#l1.aux' && mmv '*.aux' '#1'
結論
Linux上のすべての一括名前変更にデフォルトのBashユーティリティを使用することは可能ですが、名前変更ツールとmmvツールを使用すると、はるかに簡 また、コマンドラインでGUIを使用する場合は、Thunarの一括名前変更アプリケーションを使用することもできます。 このガイドの例では、さまざまな名前の変更シナリオをカバーしており、他のニーズに合わせて簡単に適応できます。