【发布时间】:2015-08-15 03:04:07
【问题描述】:
我在 Red Hat Enterprise Linux Server 6.6 版(圣地亚哥)上运行了以下一行代码
grep -rl 'room' book/ | xargs sed -i 's/room/equipment/g'
我收到以下消息
sed: can't read book/
book/del_entry_ajax.php: No such file or directory
其实我可以跑
grep -rl 'room' book/del_entry_ajax.php | xargs sed -i 's/room/equipment/g'
成功然后再次运行第一个命令,我得到了
sed: can't read book/
: No such file or directory
为什么会这样,我该如何解决?
【问题讨论】:
-
您的文件名称中是否包含“奇数”字符?您的脚本(如果在脚本中)是否有 DOS 行尾?如果您不关心时间戳更改(以及添加的工作,您可以在此处完全避免
grep/xargs,只需在所有文件上运行sed。它不会对不更改的文件进行修改匹配(尽管它无论如何都会复制和替换它们)。 -
写信:
grep -rl 'room' book/ | tr \\n \\0 | xargs -0 sed -e 's/room/equipment/g' -i -
谢谢。我终于发现有一个名为 `\` 的文件会导致这个奇怪的错误。 (我什至不知道如何在stackoverflow中输入反斜杠作为代码格式)