我想知道为什么下面的命令不起作用:
sudo find . -name index.htm | xargs -0 sudo sed -i 's/pattern1/pattern2/g'
当分别运行这两个命令时,它们按预期工作, find
find了所有需要改变的文件, sed
根据正则expression式正确地replace了文本(显然,当我单独运行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
选项。
目录或文件名中是否有空格?