我想知道为什么以下命令不起作用:
sudo find . -name index.htm | xargs -0 sudo sed -i 's/pattern1/pattern2/g'
当分别运行这两个命令时,它们按预期工作,find
找到了我需要更改的所有文件,并sed
根据正则表达式正确替换了文本(显然,当我单独运行 sed 命令时,我提供了一个文件名作为参数)。当它们与 xargs -0 一起运行时,我得到了
sed:
./index.htm
./folder1/index.htm
./folder1/subfolder2/index.htm
...
...
./lastfolder/index.htm: No such file or directory
我最终使用
sudo find . -name index.htm -exec sudo sed -i 's/pattern1/pattern2/g' {} \;
它工作得很好,我只是好奇为什么使用 xargs 不起作用....
您没有将
-print0
选项与find
.目录或文件名中是否有空格?