zsh 複数のファイルをzmvで一括リネームする
提供: FreeBSD入門
スポンサーリンク
ファイル名の変更でスクリプトを書いたりすることもあるかと思いますが、zshでは、zmvを用いることで、ファイル名の一括リネームを簡単に行えます。一気に拡張子を変更するようなことが簡単にできます。
読み方
- zmv
- ぜっと えむぶい
目次
概要
zmv でファイルの一括リネームやバックアップ(コピー)、シンボリックリンク作成などが行えます。
設定
.zshrc
autoload -Uz zmv
使い方
コマンドラインオプション
zmvのコマンドラインオプションは、以下の通りです。
Usage: zmv [OPTIONS] oldpattern newpattern where oldpattern contains parenthesis surrounding patterns which will be replaced in turn by $1, $2, ... in newpattern. For example, zmv '(*).lis' '$1.txt' renames 'foo.lis' to 'foo.txt', 'my.old.stuff.lis' to 'my.old.stuff.txt', and so on. Something simpler (for basic commands) is the -W option: zmv -W '*.lis' '*.txt' This does the same thing as the first command, but with automatic conversion of the wildcards into the appropriate syntax. If you combine this with noglob, you don't even need to quote the arguments. For example, alias mmv='noglob zmv -W' mmv *.c.orig orig/*.c
拡張子を変更する方法
拡張子を .htm から .html に一括で変更します。
zmv -W '*.htm' '*.html'
avi から mp4 に変更してみる例です。
zmv -W '*.avi' '*.mp4'
foo-2015-05-01.txt のようなファイル名を foo-2015.05.01.txt にリネームする例です。
zmv 'foo-(*)-(*)-(*).txt' 'foo-$1.$2.$3.txt'
-w オプションでもっと簡単にできます。
zmv 'foo-*-*-*.txt' 'foo-$1.$2.$3.txt'
-W オプションでさらに簡単にできます。
zmv 'foo-*-*-*.txt' 'foo-$1.$2.$3.txt'
zmv 'foo-*-*-*.txt' 'foo-*.*.*.txt'
$1,$2 のような前方参照は、$1と$2を入れ替えるような並び替えの時は必要です。
zmv 'foo-*-*.txt' 'foo-$2-$1.txt'
リネームする前に確認する
zmv でいきなりリネームしてしまって、取り返しがつかなくなる前に、-n オプションでどうなるのか確認することができます。
zmv -n '*.txt' 'foo-*.txt'
ファイルの拡張子を.cpp から .cc に変更する前に、確認する例です。
$ zmv -W -n '*.cpp' '*.cc' mv -- auto1.cpp auto1.cc mv -- auto2.cpp auto2.cc mv -- auto3.cpp auto3.cc mv -- for.cpp for.cc mv -- vector_for_int.cpp vector_for_int.cc
mvの代わりにcpする
まるごとバックアップしたいときに利用します。
zmv -C -W '*.txt' '*.txt.ORG'
シンボリックリンクを作成する
Dropbox などで .files を共有するときに使える例です。
zmv -L -s -W 'Dropbox/dotfiles/.*' '.*'
dot.zshrc というような名前の場合は、.zshrc としてシンボリックリンクを作成します。
zmv -L -s -W 'Dropbox/dotfiles/dot.*' '.*'
拡張子を取る方法
ファイル名から拡張子を取り外す例です。a.txt が a になります。
zmv '*.txt' '*'
関連項目
ツイート
スポンサーリンク