[Linux]同一ディレクトリのファイル名をまとめて変更

2021年6月14日月曜日

Linux

mvコマンドで変更することの多いファイル名
renameコマンドでワイルドカードを使って効率的にファイル名を変更します


結論

renameコマンドを利用して変換する文字列を設定します
変換対象の文字列の設定にやや癖がありますので注意が必要です
$ rename "s/変更前文字列/変更後文字列/;" ファイル名1 ファイル名2 ...

下記が利用できる場合はこちらでも可能
$ rename 変更前文字列 変更後文字列 ファイル名1 ファイル名2 ...

こちらは注意点として環境によってはエラーが発生するため注意
$ ls
sample_1.jpg  sample_3.JPG  temp_2.jpg

# tempをsampleに変更
$ rename temp sample ./temp_1.jpg ./temp_3.JPG
Bareword "temp" not allowed while "strict subs" in use at (user-supplied code).

使用例
$ ls
temp_1.jpg  temp_2.jpg  temp_3.JPG

temp_1.jpgとtemp_3.jpgのファイル名を
sample_1.jpgとsample_3.jpgに一括して変更します
$ rename "s/temp/sample/;" ./temp_1.jpg ./temp_3.JPG

$ ls
sample_1.jpg  sample_3.JPG  temp_2.jpg

もちろんワイルドカードを使っての変更も可能です
$ ls
sample_1.jpg  sample_3.JPG  temp_2.jpg

# ./配下のsample_に該当するファイルを対象にsample_をtemp_に変更
$ rename "s/sample_/temp_/;" ./sample_*

$ ls
temp_1.jpg  temp_2.jpg  temp_3.JPG

正規表現を使って変更することも可能です
$ ls
temp_1.jpg  temp_2.jpg  temp_3.JPG

# ./配下の全てのファイルを対象にjpgまたはJPGをjpegに変更
$ rename "s/jpg|JPG/jpeg/;" ./*

$ ls
temp_1.jpeg  temp_2.jpeg  temp_3.jpeg

mvコマンドを何回も打つよりもファイル名の変更が楽になります
日々の作業負担軽減に繋がれば幸いです

AIで副業ならココから!

まずは無料会員登録

プロフィール

メーカーで研究開発を行う現役エンジニア
組み込み機器開発や機会学習モデル開発に従事しています

本ブログでは最新AI技術を中心にソースコード付きでご紹介します


Twitter

カテゴリ

このブログを検索

ブログ アーカイブ

TeDokology