【发布时间】:2017-10-24 10:07:57
【问题描述】:
我就是这样使用sed的。
find . -type f -exec sed -i "s/$3/$4/g" {} +
但即使在文件中找不到字符串,它也会更改所有文件的日期。 我可以避免吗?
【问题讨论】:
-
根据这个answer,似乎无法避免
sed的这种行为。
我就是这样使用sed的。
find . -type f -exec sed -i "s/$3/$4/g" {} +
但即使在文件中找不到字符串,它也会更改所有文件的日期。 我可以避免吗?
【问题讨论】:
sed的这种行为。
你可以先grep你的文件,看看有没有什么要替换的:
find . -type f -exec grep -q "$3" '{}' ';' -exec sed -i "s/$3/$4/g" '{}' ';'
否则无法避免时间戳更新,因为sed 基本上是在使用-i 时重新创建文件:
--就地[=SUFFIX]
此选项指定要就地编辑文件。 GNU sed 通过创建一个临时文件并将输出发送到该文件而不是标准输出来做到这一点。
到达文件末尾时,临时文件被重命名为输出文件的原始名称。
【讨论】: