Replace sed:can';t read book/:没有这样的文件或目录

Replace sed:can';t read book/:没有这样的文件或目录,replace,sed,grep,Replace,Sed,Grep,我在Red Hat Enterprise Linux Server 6.6版(圣地亚哥)上运行了以下一行代码 我得到了以下信息 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'

我在Red Hat Enterprise Linux Server 6.6版(圣地亚哥)上运行了以下一行代码

我得到了以下信息

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

这是为什么?我该怎么解决呢?

GNU的家伙们给了
grep
一个查找文件的选项,结果真的搞砸了。有一个非常好的UNIX工具可以查找文件,它有一个非常明显的名字--
查找
。试试这个:

find book -type f -print0 | xargs -0 sed -i 's/room/equipment/g'

GNU的家伙们给了
grep
一个查找文件的选项,结果真的搞砸了。有一个非常好的UNIX工具可以查找文件,它有一个非常明显的名字--
查找
。试试这个:

find book -type f -print0 | xargs -0 sed -i 's/room/equipment/g'

GNU的家伙们给了
grep
一个查找文件的选项,结果真的搞砸了。有一个非常好的UNIX工具可以查找文件,它有一个非常明显的名字--
查找
。试试这个:

find book -type f -print0 | xargs -0 sed -i 's/room/equipment/g'

GNU的家伙们给了
grep
一个查找文件的选项,结果真的搞砸了。有一个非常好的UNIX工具可以查找文件,它有一个非常明显的名字--
查找
。试试这个:

find book -type f -print0 | xargs -0 sed -i 's/room/equipment/g'


您的文件名称中是否有任何“奇数”字符?您的脚本(如果在脚本中)是否有DOS行结尾?如果您不关心时间戳的更改(以及添加的工作),您可以完全避免此处的
grep
/
xargs
,只需在所有文件上运行
sed
。它不会对不匹配的文件进行修改(尽管它仍将复制和替换它们).Write:
grep-rl'room'book/|tr\\n\\0 | xargs-0 sed-e's/room/equipment/g'-i
Thx。我终于发现有一个名为“\”的文件导致了这个奇怪的错误。(我甚至不知道如何在stackoverflow中键入反斜杠作为代码格式)你的文件名中有“奇数”字符吗?你的脚本(如果这是在脚本中)是否有DOS行结尾?如果您不关心时间戳的更改(以及添加的工作),您可以在此处完全避免
grep
/
xargs
,只需在所有文件上运行
sed
。它不会对不匹配的文件进行修改(尽管它会复制并替换它们).Write:
grep-rl'room'book/|tr\\n\\0 | xargs-0 sed-e's/room/equipment/g'-i
Thx。我终于发现有一个名为“\”的文件导致了这个奇怪的错误。(我甚至不知道如何在stackoverflow中键入反斜杠作为代码格式)你的文件名中有“奇数”字符吗?你的脚本(如果这是在脚本中)是否有DOS行结尾?如果您不关心时间戳的更改(以及添加的工作),您可以在此处完全避免
grep
/
xargs
,只需在所有文件上运行
sed
。它不会对不匹配的文件进行修改(尽管它会复制并替换它们).Write:
grep-rl'room'book/|tr\\n\\0 | xargs-0 sed-e's/room/equipment/g'-i
Thx。我终于发现有一个名为“\”的文件导致了这个奇怪的错误。(我甚至不知道如何在stackoverflow中键入反斜杠作为代码格式)你的文件名中有“奇数”字符吗?你的脚本(如果这是在脚本中)是否有DOS行结尾?如果您不关心时间戳的更改(以及添加的工作),您可以在此处完全避免
grep
/
xargs
,只需在所有文件上运行
sed
。它不会对不匹配的文件进行修改(尽管它会复制并替换它们).Write:
grep-rl'room'book/|tr\\n\\0 | xargs-0 sed-e's/room/equipment/g'-i
Thx。我终于发现有一个名为``的文件导致了这个奇怪的错误。(我甚至不知道如何在stackoverflow中键入反斜杠作为代码格式)直接使用
-exec
怎么样,比如
find…-exec-sed-i…
?当然,
find
是OP想要的,但是我认为
grep-Hnr项目文件夹
非常有用。在那之后使用
vi文件+行数
非常方便。我个人总是避免
-exec
因为它使琐碎的工作变得非常简单,但当工作变得稍微有趣时,就需要完全重写或太复杂了。@hek2mgl我会做
查找项目文件夹| xargs grep-Hn
,这还不错。@EdMorton你指的是?(在本例中,我想是组合规则?)直接使用
-exec
怎么样,比如
find…-exec-sed-i…
?当然,
find
是OP想要的,但是我认为
grep-Hnr项目文件夹
非常有用。在那之后使用
vi文件+行数
非常方便。我个人总是避免
-exec
因为它使琐碎的工作变得非常简单,但当工作变得稍微有趣时,就需要完全重写或太复杂了。@hek2mgl我会做
查找项目文件夹| xargs grep-Hn
,这还不错。@EdMorton你指的是?(在本例中,我想是组合规则?)直接使用
-exec
怎么样,比如
find…-exec-sed-i…
?当然,
find
是OP想要的,但是我认为
grep-Hnr项目文件夹
非常有用。在那之后使用
vi文件+行数
非常方便。我个人总是避免
-exec
因为它使琐碎的工作变得非常简单,但当工作变得稍微有趣时,就需要完全重写或太复杂了。@hek2mgl我会做
查找项目文件夹| xargs grep-Hn
,这还不错。@EdMorton你指的是?(在本例中,合成规则I