find, sed, xargsを用いた一括リネーム
find
, sed
, xargs
を用いた一括リネーム
find
, sed
, xargs
の基本的なオプションのみを使った有用な使い方について備忘録がてら残しておくことにする。
find
で対象ファイルを絞り込み
1find . -name "litmus_hit_*"
glob 検索を行う。必要に応じて-maxdepth
オプションを使う。
sed
でリネーム後の名前を生成
1find . -name "litmus_hit*" | sed -r "p;s/litmus_hit_([0-9]*).c/hit_litmus_\1.c/"
キャプチャした文字列の参照は$1
などではなく\1
。
正規表現を使う場合は-r
オプションを使うこと。
p
コマンドを入れておくことにより、mv に渡す元の path を生成することができる。
xargs mv
で実際にリネーム
1find . -name "litmus_hit*" | sed -r "p;s/litmus_hit_([0-9]*).c/hit_litmus_\1.c/" | xargs -n2 mv
xargs
に渡すことにより、一括でリネーム。
ひとこと
xargs
は便利。
comments powered by Disqus