ディレクトリ内に以下のようなファイルがあり、ファイルの拡張子を htm から html に変換したい場合、mv コマンドで1ファイル毎に変換を掛けたり、ファイルマネージャでファイルを選択して F2 を押して拡張子だけの変換をかけていないでしょうか?
数個のファイルであれば問題ありませんが、一度に多くのファイル名を変更したい時は rename コマンドが便利です。
$ ls
test_1.htm test_2.htm test_3.htm test_4.htm
rename コマンドは以下のようにインストールします。
$ sudo apt install rename
使用方法は sed コマンドと同じように変更前文字列と変更後文字列を ‘s/変更前/変更後/’ のように囲い変換します。
$ rename -v 's/\.htm/\.html/' *.htm
test_1.htm renamed as test_1.html
test_2.htm renamed as test_2.html
:
もちろん拡張子以外も一括で変換できます。
$ rename -v 's/test/sample/' *.html
test_1.html renamed as sample_1.html
test_2.html renamed as sample_2.html
:
-v : コマンド成功時の詳細表示
その他ファイル名に数字が挿入されていて、桁数が違うとソート時におかしくなってしまう事ってないでしょうか? rename コマンドであれば0埋め(パディング)して桁数を揃えてくれます。
$ ls
sample_1.html sample_10.html sample_2.html sample_3.html sample_4.html <- sample_1.html の次、sample_2.html ではなく sample_10.html となる。
$ rename -v 's/(\d+)/sprintf("%03d", $1)/e' *.html
sample_1.html renamed as sample_001.html
sample_10.html renamed as sample_010.html
sample_2.html renamed as sample_002.html
:
※ \d+は1桁以上の数字 e は、上記のような式(Expression)を用いる際に指定します。