Bash
OSX
シェル

findを使ってまとめて何かする

More than 1 year has passed since last update.

調べるのが面倒なので、自分用のまとめです。

まとめてリネーム

data01.dat, data02.dat, data03.dat, ...をweight01.dat, weight02.dat, weight03.datにリネームする。

find . -name 'data[0-9]*.dat' | sed -e 's/\(.\/data\(.[0-9]*\).dat\)/mv \1 weight\2.dat/g' | sh

ファイルエンコーディングをまとめて変換

./A/weight01.dat, ./A/weight02.dat, ./A/weight03.dat,
./B/data01.dat, ./B/data02.dat, ./B/data03.dat,
./C/data01.dat, ./C/data03.dat, ./C/data03.datのdatファイル(A,B,Cの中にある.datファイルはこれで全部) のファイルエンコーディングをsjisからutf8に変換(新しいファイル名は filename.utf8.datとする)する。

find . -name '*.dat' -exec sh -c 'iconv -f sjis -t utf8 {} > {}.utf8.dat ' \;

WindowsのMicrosoft Excelからエクスポートしたcsvファイルなら、sjisをcp932に置換すればよい。