我正在嘗試在 HP-UX 中進行遞歸查找和替換,但缺少一些內容。
我現在擁有的:
find . -name "*.java" | xargs sed 's/foo/bar/g'
我知道問題是它沒有替換內聯文件。我相信在其他作業系統上有一個 -i 標誌,但在我的 HP-UX 版本中似乎沒有。
有什麼建議麼?
答案1
-i
你可以像這樣解決缺失的問題(未經測試):
for i in `find . -name "*.java"`; do cp $i /tmp/$$; sed 's/foo/bar/g' < /tmp/$$ > $i;done
答案2
你總是可以使用ed
find . -name "*.java" | while IFS= read -r file; do
ed "$file" <<ED_COMMANDS
%s/foo/bar/g
w
q
ED_COMMANDS
done