【Linux Tips】 テキストファイルの一括置き換え/ファイル名の一括置き換え
久しぶりの覚書き。
perlを使った1ラインコマンドでのテキストファイルの一括置き換え方法
$ perl -p -w -i.bak -e "s/置換前文字列/置換後文字列/g" ファイル名
さらにfindを組み合わせ複数ファイルを一括処理する方法
以下のどちらでもOK。実は他にも色々と方法はある。
$ find . -name ファイル名パターン | xargs perl -p -w -i.bak -e "s/置換前文字列/置換後文字列/g"
$ find . -name ファイル名パターン -exec perl -p -w -i.bak -e "s/置換前文字列/置換後文字列/g" {} \;
もちろんperlの強力な正規表現が使えます。
ファイル名の一括置き換え方法
大量のファイルの拡張子を一気に変更とか、色々できまする。
通常は rename コマンドを使えば良いのだけど、CygwinとかMinGWではrenameが無いっぽい。
よって、シェルスクリプトと組み合わせて以下のようにすると良い。
$ find . -name ファイル名パターン | while read file; do mv $line `echo $file | sed -e 's/置換前文字列/置換後文字列/'`; done
う〜む、Linuxコマンドラインの世界は奥が深いですなぁ。