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