zmvを使ってファイルのリネームとかを簡単に行う
shellを使ってファイルの一括リネームなどを行う際には一般的に
for f in *.html; do mv $f $.htmf; done
こんな感じ
なのだが、これだとどうも面倒な感じ。
連番なんかと付けようとする場合にはもっと面倒。
なので、なんか便利なものはないかと探した。
Linuxには”rename"というコマンドがあるらしく、これが超絶簡単便利そうなものだったのだが、"UNIX"にはないらしい。
そして、Macにもこの"rename"コマンドは入っていなかった。
MacPortsなんかを探したけれども見つからず。諦めて、まともに書いた事がないShellScriptでも書いてみようと思ってたところ見つけたのがzshの"zmv"コマンド
詳細は
複数のファイルの名前をまとめて変更する - 技術メモ帳
http://d.hatena.ne.jp/lurker/20061120/1163981280
を見てもらうと良いのだが、かなーり簡単にファイルのリネームが行える。
リンク先にもあるように、たとえば、拡張子htmlをhtmに変えたい場合などこれだけでOK
zmv -W '*.html' '*.htm'
-Wを付けることで、* による、シェルっぽい一括指定が簡単にできてしまう。
-W無しでもこの程度
zmv '(*).html' '\$1.htm'
まぁ、大体どんなツール使っても正規表現は似たようなものですね。$の前に\付けることくらい。
ちなみにこの"zmv" 、autoloadをしてやらないと動かないみたい。
また、noglobを指定することで、鬱陶しいシングルクオートも不要になります。
なので、zshrcに以下を記述しておくと良いです。
autoload zmv alias zmv='noglob zmv'