【问题标题】:sed: can't read : No such file or directorysed:无法读取:没有这样的文件或目录
【发布时间】: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' '{}' \;

标签: search replace sed


【解决方案1】:

感谢格伦杰克曼的建议:

我需要在括号周围加上引号:

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

而不是我最初发布的方式。

【讨论】:

    猜你喜欢
    • 2017-08-27
    • 1970-01-01
    • 2022-01-08
    • 2014-08-24
    • 2021-11-24
    • 2016-11-12
    • 2021-09-10
    • 2018-08-14
    • 2015-08-15
    相关资源
    最近更新 更多