広告 bash Linux Mac

LinuxやMacでファイルやディレクトリ名を一括置換したい

LinuxやMacでファイルの拡張子を一括で変えたい時やファイルの頭に文字列入れたいときは rename コマンドを使うと便利です。

基本的な書式はこのとおり。

rename [from] [to] [files]

from  :置き換え前の文字列
to    :置き換え後の文字列
files :変換対象のファイル、ワイルドカードの使用も可能
% rename .htm .html *.htm
→ 拡張子を .htm から .html に置換

% rename hoge- piyo- foo-*.txt
→ hoge-*.txt を piyo-*.txt に置換

% rename hoge "" hoge*.txt
→ ファイル名先頭の hoge を削除

% rename "" hoge *.txt
→ ファイル名の先頭に hoge を加える

mv でしこしこがんばるよりもよほど楽させてくれそうです。

rename コマンドのアツいポイントは、vim や sed のように正規表現を使ってファイル名を置換できること。(少し古めの環境はだめっぽいですが・・)

こんなかんじ。

% ll hoge*
-rw-rw-r-- 1 bacchi bacchi  53683  1月 13 09:56 hoge_01.txt
-rw-rw-r-- 1 bacchi bacchi  58000  1月 13 09:56 hoge_02.txt
-rw-rw-r-- 1 bacchi bacchi  56103  1月 13 09:56 hoge_03.txt
-rw-rw-r-- 1 bacchi bacchi  51102  1月 13 09:56 hoge_01.txt
-rw-rw-r-- 1 bacchi bacchi  51133  1月 13 09:56 hoge_05.txt
-rw-rw-r-- 1 bacchi bacchi  55016  1月 13 09:56 hoge_06.txt
-rw-rw-r-- 1 bacchi bacchi  57917  1月 13 09:56 hoge_07.txt
-rw-rw-r-- 1 bacchi bacchi  51525  1月 13 09:56 hoge_08.txt
-rw-rw-r-- 1 bacchi bacchi  51161  1月 13 09:56 hoge_09.txt
-rw-rw-r-- 1 bacchi bacchi   8689  1月 13 09:56 hoge_10.txt

% rename 's/.txt/.lst/' hoge_*

% ll hoge*
-rw-rw-r-- 1 bacchi bacchi  53683  1月 13 09:56 hoge_01.lst
-rw-rw-r-- 1 bacchi bacchi  58000  1月 13 09:56 hoge_02.lst
-rw-rw-r-- 1 bacchi bacchi  56103  1月 13 09:56 hoge_03.lst
-rw-rw-r-- 1 bacchi bacchi  51102  1月 13 09:56 hoge_01.lst
-rw-rw-r-- 1 bacchi bacchi  51133  1月 13 09:56 hoge_05.lst
-rw-rw-r-- 1 bacchi bacchi  55016  1月 13 09:56 hoge_06.lst
-rw-rw-r-- 1 bacchi bacchi  57917  1月 13 09:56 hoge_07.lst
-rw-rw-r-- 1 bacchi bacchi  51525  1月 13 09:56 hoge_08.lst
-rw-rw-r-- 1 bacchi bacchi  51161  1月 13 09:56 hoge_09.lst
-rw-rw-r-- 1 bacchi bacchi   8689  1月 13 09:56 hoge_10.lst

超便利だなーということで、メモ!

Sponsor Link

-bash, Linux, Mac