[Shell] zsh の zmv でファイル名を一括で変更する

それ zsh でできるよ的なものを見つけたので memo.

[markdown]
@mollifier さんのブログと Twitter で、zsh と metal の勉強をいつもさせて頂いている。

> * [zsh の zmv を使って簡単に複数ファイルを一括リネームする – mollifier delta blog](http://mollifier.hatenablog.com/entry/20101227/p1)

## 設定

`~/.zshrc` あたりに下記を設定しておく。

“`:~/.zshrc
autoload -Uz zmv
# alias zmv=’noglob zmv -W’
“`

2行目はお好みで。
ファイル名をいろいろ書き換えたい場合などは、オプションなしが便利でした。

## つかいかた

連番のファイルがあったとして。とりあえず下記で作成。

“`prettyprinted
% touch {1..30}.txt
“`

こんな形で先ほど設定した zmv を実行。

“`prettyprinted
% zmv *.txt *.md
“`

`-n` オプション付きで dry run

“`prettyprinted
% zmv -n *.txt *.md
mv — 1.txt 1.md
mv — 10.txt 10.md
mv — 11.txt 11.md
mv — 12.txt 12.md
:
mv — 7.txt 7.md
mv — 8.txt 8.md
mv — 9.txt 9.md
“`

べんり!

詳しい使い方は元記事へ。

> * [zsh の zmv を使って簡単に複数ファイルを一括リネームする – mollifier delta blog](http://mollifier.hatenablog.com/entry/20101227/p1)

ありがとうございます。

## 例

“`prettyprinted
% zmv -n ‘(*)_on.svg’ ‘$1–on.svg’
mv — icn_pin_listing_on.svg icn_pin_listing–on.svg
mv — icn_pin_normal_on.svg icn_pin_normal–on.svg
mv — icn_pin_star_on.svg icn_pin_star–on.svg
mv — icn_pin_tower_on.svg icn_pin_tower–on.svg

% zmv -n ‘(*)_def.svg’ ‘$1.svg’
mv — icn_pin_listing_def.svg icn_pin_listing.svg
mv — icn_pin_normal_def.svg icn_pin_normal.svg
mv — icn_pin_star_def.svg icn_pin_star.svg
mv — icn_pin_tower_def.svg icn_pin_tower.svg

% zmv -n ‘icn_(*).svg’ ‘icon_$1.svg’
mv — icn_pin_listing–on.svg icon_pin_listing–on.svg
mv — icn_pin_listing.svg icon_pin_listing.svg
mv — icn_pin_normal–on.svg icon_pin_normal–on.svg
mv — icn_pin_normal.svg icon_pin_normal.svg
mv — icn_pin_star–on.svg icon_pin_star–on.svg
mv — icn_pin_star.svg icon_pin_star.svg
mv — icn_pin_tower–on.svg icon_pin_tower–on.svg
mv — icn_pin_tower.svg icon_pin_tower.svg

% c=1 zmv -n ‘*.(*)’ ‘$(date +”%Y-%m-%d”)_VirtualBox_${(l:2::0:)$((c++))}.$1’
mv — 1.png 2019-09-08_VirtualBox_01.png
mv — 2.png 2019-09-08_VirtualBox_02.png
mv — 3.png 2019-09-08_VirtualBox_03.png
mv — 4.png 2019-09-08_VirtualBox_04.png
“`

## 補遺

– [Zshメモ : zmvコマンドでリネーム(連番、ゼロ埋め、置換、拡張子、大文字、小文字など) – もた日記](https://wonderwall.hatenablog.com/entry/2017/02/26/000702)
– [bash: ファイル名を一括で変更する | deadwood](https://www.d-wood.com/blog/2014/06/26_6412.html)

[/markdown]