为什么Perl在与find一起使用时会删除文件内容?

时间:2017-06-23 11:24:52

标签: linux bash perl

有人可以看到Perl在与find一起使用时删除所有文件内容的原因吗?

echo stning >> test.tex
echo stning >> test.tex
find . -type f -name \*.tex -print0 | xargs -0 perl -i -ne 's/stning/sætning/g' 
cat test.tex 

最后一个命令不会返回任何内容,而且是问题。

2 个答案:

答案 0 :(得分:10)

您需要-p,而不是-n-n标志仅读取,但不打印。

find . -type f -name \*.tex -print0 | xargs -0 perl -i -pe 's/stning/sætning/g' 

您可以使用助记符 perl pie 轻松记住这一点,perl -p -i -e或更短perl -pi -e

答案 1 :(得分:-1)

你可以用sed本身来达到你的结果。只需要一个内联替换。

find . -type f -name \*.tex -print0 | xargs -0 sed -i 's/stning/sætning/g'