我想知道为什么以下命令不起作用:
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 不起作用......
答案1
您没有使用-print0
选项find
。
答案2
目录或文件名中是否有空格?