【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コマンドラインの世界は奥が深いですなぁ。[E:think]

Read more