Skip to content

Instantly share code, notes, and snippets.

@ponko2
Created January 4, 2012 03:09
Show Gist options
  • Save ponko2/1558281 to your computer and use it in GitHub Desktop.
Save ponko2/1558281 to your computer and use it in GitHub Desktop.
複数ファイルの名前をまとめて変更する ref: http://qiita.com/items/1550
## 準備
# zmv を使用する前には `autoload zmv` する必要がある
# `man zshexpn` の PARAMETER EXPANSION とかも見ておくと捗る
# zmv の使用例については `man zsh-lovers` にたくさんあります
## 便利なオプション
## zmv のオプションについては `man zshcontrib` で調べることができる。
# zmv -n (実際にリネームする前に結果を確認)
zmv -n '*' '$f[5,-1]' # 例は頭4文字削除
# zmv -W ('(*)' '$1' を '*' で済ませられる)
zmv -W '*.sh' '*.pl' # 例は拡張子の変更
zmv '(*).sh' '$1.pl' # -W を使用しなかった場合
## ファイル名の一部を置換したい時
# 例) "file-hell.name" -> "file-heaven.name"
zmv '(*)hell(*)' '${1}heaven${2}'
# もしくは
zmv '*' '$f:s/hell/heaven/'
## 括弧の除去
# 例) foo-(bar).avi -> foo-bar.avi
zmv '*' '${f//[()]/}'
## 連番リネーム
# 例) foo.jpg > 1.jpg, fnord.jpg > 2.jpg, ..
c=1 zmv '*.jpg' '$((c++)).jpg'
## 連番リネーム(0埋め3桁)
# 例) foo.jpg > 001.jpg, fnord.jpg > 002.jpg, ..
c=1; zmv '*.(jpg)' '${(l:3::0:)$((c++))}.$1'
## 連番ファイルを0埋め桁揃え
# 例) 1.jpg -> 001.jpg, 2.jpg -> 002.jpg, ..
zmv '(<1->).jpg' '${(l:3::0:)1}.jpg'
# 例) pic1.jpg -> pic0001.jpg, pic2.jpg -> pic0002.jpg, ..
zmv 'pic(*).jpg' 'pic${(l:4::0:)1}.jpg'
## 拡張子をすべて小文字に揃える
# 例) 001.JPG > 001.jpg, 002.Jpg > 002.jpg, ..
zmv '(*).(#i)jpg' '$1.jpg'
## スペースをハイフンに置換
# 例) foo bar baz.txt -> foo-bar-baz.txt
zmv '* *' '$f:gs/ /-'
## 小文字/大文字 に統一
zmv '(*)' '${(L)1}' # 小文字
zmv '(*)' '${(U)1}' # 大文字
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment