我正在尝试在 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