rename コマンドでファイルの拡張子を一括で変換する

LINEで送る
Pocket

ディレクトリ内に以下のようなファイルがあり、ファイルの拡張子を 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)を用いる際に指定します。

LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください