尝试查找包含此文本“david_now”的所有文件并替换为此“david_old”
grep -r“david_now”| sed -i 's"david_now"david_old"g'
它在某些文件上失败并停止示例:
sed 没有输入文件 BRF/Test_page.mujebr3.brf:二进制文件匹配
您将 grep 的输出(文件列表)作为 sed 的输入传递。如果您希望 sed 实际操作这些文件,则需要使用
xargs
命令,如下所示:
grep -rl "david_now" | xargs sed -i 's"david_now"david_old"g'
这基本上可以工作,但如果你的文件名包含空格,你需要修改 grep 以在文件名之间使用 NUL 分隔符:
grep -rlZ "david_now" | xargs -0 sed -i 's"david_now"david_old"g'