Unix HP-UX ksh 递归查找和替换

Unix HP-UX ksh 递归查找和替换

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

相关内容