我試圖在HP-UX中執行遞歸查找和替換,但缺少一些內容。Unix HP-UX ksh遞歸查找和替換
我在看什麼:
find . -name "*.java" | xargs sed 's/foo/bar/g'
知道的問題是,它不是替換文件內聯。我相信其他操作系統有一個-i標誌,但在我的HP-UX版本中似乎沒有。
有什麼建議嗎?
我試圖在HP-UX中執行遞歸查找和替換,但缺少一些內容。Unix HP-UX ksh遞歸查找和替換
我在看什麼:
find . -name "*.java" | xargs sed 's/foo/bar/g'
知道的問題是,它不是替換文件內聯。我相信其他操作系統有一個-i標誌,但在我的HP-UX版本中似乎沒有。
有什麼建議嗎?
find . -name "*.java" | xargs sed -i 's/foo/bar/g'
或
find . -name "*.java" | xargs perl -pi -e's/foo/bar/g'
簡單,便攜的解決方案來運行你的文件喜歡的任何工具,並改變他們「就地」(SED -i在後臺使用一個tmp文件太)只是:
find . -name "*.java" |
while IFS= read -r file; do
sed 's/foo/bar/g' "$file" > tmp && mv tmp "$file"
done
您可以使用SED,grep的,砍這種方法,不管你喜歡:
find . -name "*.java" |
while IFS= read -r file; do
grep "whatever" "$file" > tmp && mv tmp "$file"
done
唯一不起作用的是其名稱中包含換行符的文件,但find | xargs
解決方案原樣不變,您應該重命名這些文件,無論如何您都有這些文件。
請點擊此處:http://theunixshell.blogspot.com/2012/12/find-and-replace-string-in-all-files.html – Vijay
另請參閱超級用戶:http://superuser.com/q/532573/4714 –