2014-03-28 127 views
4

我运行下面的命令:sed的:无法读取:没有这样的文件或目录

find . -name '*.html' -exec sed "s/foo/bar/g" {} \; 

所在的文件结构如下:

./two/three.html 
./two/two.html 
./two/one.html 
./three/three.html 
./three/two.html 
./three/one.html 
./one/three.html 
./one/two.html 
./one/one.html 

然而,sed的回来说即使这两个命令自己工作正常(即我可以自己运行查找,并且我可以自行运行sed),但无法找到这些文件。

我和我一起看了一眼,他也被困住了。我最终走了一条不同的路线,但我仍然想知道这里究竟出了什么问题。

+0

如果删除'-print'部分会怎么样?对我来说看起来没有必要。 – fedorqui

+0

'print'将在'sed'执行操作之前打印文件的名称。可能是OP想要的东西。 –

+0

假设你真的使用'sed -i'来“保存in-place”,否则输出将在你的例子中进行。我认为@fedorqui是一些东西。祝你好运。 – shellter

回答

3

感谢格伦·杰克曼的忠告:

我需要把周围的括号报价为这样:

-exec sed "s/foo/bar/g" '{}' \; 

比我最初如何张贴相反。

相关问题