【问题标题】:sed changes files datesed 更改文件日期
【发布时间】:2017-10-24 10:07:57
【问题描述】:

我就是这样使用sed的。

find . -type f -exec sed -i "s/$3/$4/g" {} +

但即使在文件中找不到字符串,它也会更改所有文件的日期。 我可以避免吗?

【问题讨论】:

  • 根据这个answer,似乎无法避免sed的这种行为。

标签: linux sed


【解决方案1】:

你可以先grep你的文件,看看有没有什么要替换的:

find . -type f -exec grep -q "$3" '{}' ';' -exec sed -i "s/$3/$4/g" '{}' ';'

否则无法避免时间戳更新,因为sed 基本上是在使用-i 时重新创建文件:

--就地[=SUFFIX]

此选项指定要就地编辑文件。 GNU sed 通过创建一个临时文件并将输出发送到该文件而不是标准输出来做到这一点。

到达文件末尾时,临时文件被重命名为输出文件的原始名称。

GNU sed Manual

【讨论】:

  • 它的功能正常。现在只有更新的文件修改了日期。
猜你喜欢
  • 1970-01-01
  • 2016-01-26
  • 2016-03-08
  • 2010-10-27
  • 2016-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-12
相关资源
最近更新 更多