【bash】複数ファイルの名前変換【一括変換】
例えば、以下のようなファイルがある。
code:musics
musics
|-- 001-hoge.txt
|-- 002-huga.txt
|-- 003-foo.txt
--- 004-bar.txt
これらのファイルの、先頭についている数字とハイフンを除去したい場合、以下のコマンドを利用する。
code: bash
ls | grep 0 | awk '{print $1" "substr($1, 5)}' | xargs -n2 mv
awkはテキスト処理に主に使われるコマンド。
実はプログラミング言語の一種。
色々とできるが、今回は xargs に渡す文字列を作る。
シングルクォーテーションで括った中が文字列となり、$1はパイプなどから渡された引数。
printは標準出力。
substrによって文字列を切り出すことができ、今回は5文字目以降を残している。
xargsはパイプから渡ってきた引数を、別のコマンドに渡す役をしている。
-n オプションでいくつずつの引数を渡すかを示しており、今回はリネームするために
元のファイル名␣変更後のファイル名
を mv に渡している。
001-hoge.txt␣hoge.txt | xargs -n2 mv
今回はこのようになり、リネームができる。
これで、一括でのファイル名変更ができた。
awk はもっと細かい切り出しなども行えるので、調べてみたい。
#bash
#awk
#シェル芸