ナナマルイチ


あるディレクトリ下にあるファイル中の文字列を一括で変換する

2017/04/25

環境: Ubuntu Server 17.04 + lubuntu-desktop

一括で文字列を変換したい。

この場合、[find]コマンドと[sed]コマンドを組み合わせて使うとできた。

$ find memo/ -type f -exec sed -i -e 's/φ(.. )/φ(*゜∀゜)=3/g' {} \;

上記の例では、「memo/」以下にあるファイル内に書かれているメモを一生懸命書いているような顔文字「φ(.. )」を興奮状態で勉強している顔文字「φ(*゜∀゜)=3」に一括で変換している。

φ(*゜∀゜)=3むふー

分解すると[find memo/ -type f]でmemoディレクトリ以下のファイルを探す。

次に[-exec]でコマンドを打てるようにする。

そして[sed -i -e 's/φ(.. )/φ(*゜∀゜)=3/g']というsedコマンドを実行する。

[{}]の部分はファイル名に置換され、[\;]で-execを止める。

一気に置換してしまうので、意図しないものまで置き換えられないように、ある程度注意が必要。