人に聞けない痔の悩み、これでスッキリ >>

コマンドラインから、サブディレクトリ内のすべてのファイルの文字を置換する方法を教えてください。

for x in *.*; \
do \
sed -e 's/original_pattern/replaced_pattern/g' $x > ${x}_tmp ; \
mv -f ${x}_tmp $x ; \
done

とすることにより、ひとつのディレクトリ内であれば、文字列を変換できました。
しかし、そのディレクトリのサブディレクトリ内のファイルについても、再帰的に変換を行いたいのです。
grep -r などと組み合わせればよいのかとも思ったのですが、結局よくわかりませんでした。
よろしくお願いいたします。

A 回答 (1件)

find の出力を使えばいいと思います。





find . -type f |
while read f
do
 f2=${f}_tmp
 sed -e 's/original_patterm/replaced_pattern/g' $f >$f2
 mv -f $f2 $f
done
    • good
    • 0
この回答へのお礼

ありがとうございます。
無事に解決しました。
非常に助かりました。

お礼日時:2005/07/06 18:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング