web-dev-qa-db-ja.com

Unix HP-UXksh再帰的検索と置換

HP-UXで再帰的な検索と置換を行おうとしていますが、何かが足りません。

私が今持っているもの:

find . -name "*.Java" | xargs sed 's/foo/bar/g'

問題は、ファイルがインラインで置き換えられていないことです。他のOSには-iフラグがあると思いますが、私のHP-UXバージョンにはないようです。

助言がありますか?

3
user187195

不足している-iを次のように回避できます(未テスト):

for i in `find . -name "*.Java"`; do cp $i /tmp/$$; sed 's/foo/bar/g' < /tmp/$$ > $i;done
1
sparkie

いつでもedを使用できます

find . -name "*.Java" | while IFS= read -r file; do
  ed "$file" <<ED_COMMANDS
%s/foo/bar/g
w
q
ED_COMMANDS
done
1
glenn jackman