【发布时间】:2014-05-08 02:42:42
【问题描述】:
我正在运行以下命令:
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 回来说找不到文件,即使这两个命令自己运行良好(即我可以自己运行 find,我也可以自己运行 sed)。
我有一个同伴和我一起看过它,他也被难住了。我最终走了一条不同的路线,但我仍然想知道这里到底出了什么问题。
【问题讨论】:
-
如果删除
-print部分会怎样?在我看来,这似乎没有必要。 -
print将在sed执行操作之前打印文件名。可能是 OP 想要的东西。 -
假设您真的使用
sed -i来“就地保存”,否则您的示例中的输出将在哪里。我认为@fedorqui 正在做某事。祝你好运。 -
我添加了 -print 以确保它正在访问文件。当我删除它时,我会得到相同的结果。
-
未加引号的大括号可能是个问题。试试:
-exec sed 's/foo/bar/g' '{}' \;