事の経緯
例えば、以下のディレクトリ内で、全体のファイル名をTestをSampleに変えたいと思ったとします。実行環境は、Ubuntuです。
$ ls
Test_00.txt Test_01.txt Test_02.txt Test.dat
そうしたいとき、mvコマンドを真っ先に浮かぶのですが、わざわざ一つ一つmvコマンドで打っていくのは馬鹿らしいので、一括でファイル名を変換するコマンドはないものかと調べているとrenameコマンドというものがあるらしく、一括でファイル名の共通した部分を変換してくれるらしいです。
方法を調べたのですが、見合った記事が少なかったので、記録します。
renameコマンドの使い方
複数のファイルの名前を変えるrenameコマンドを紹介します。今回は、全てのファイル名をTestからSampleに変換します。
rename Test Sample *
1つ目の引数で変更前のファイル名の部分を指定
2つ目の引数で変更後のファイル名の部分を指定
3つ目の引数で対象のファイル名を指定
今回は、全てのファイルを指定しているため、ワイルドカードを使ってます。
実行後
ls
Sample_00.txt Sample_01.txt Sample_02.txt Sample.dat
しかし、このことが書いてある記事に辿り着くのに苦労しました(汗)。
ここで注意が必要です。renameコマンドはファイルだけではなくディレクトリも対象になります。そのため、ranameコマンドは同一ディレクトリ内でのファイル名一括変更時のみに使用したほうが良いでしょう。
他にもLinux環境では、以下の方法で変換するらしいです。
$ rename "s/Test/Sample/;" *
Windowsでは、renameコマンドと同様なコマンドでrenコマンドがあるらしいです。
まとめ
renameコマンドの構文
$ rename 変更前文字列 変更後文字列 対象ファイル名
おススメ書籍
Linuxを学ぶ上で、おススメの書籍を紹介します。
この書籍は、LPICというLinuxのプロフェッショナルとして認定される資格の教科書になります。
資格の教科書ですが、Linuxを学ぶ上でもってこいの書籍です。自分は、この書籍でLPICを取得しました。
![](https://images-fe.ssl-images-amazon.com/images/I/51kkwZ88wIL._SL160_.jpg)
Linux教科書 LPICレベル1 Version5.0対応