如何在不改变文件日期的情况下更新多个文件?

如何在不改变文件日期的情况下更新多个文件?

我使用以下命令将当前目录中的文件中单词“ ”替换merchant为“ ”:capital

find * -type f -exec sed -i -e 's/merchant/capital/g' {} \;

但是上述命令也会修改文件日期,有什么办法可以停止文件修改日期?

提前致谢。

答案1

我认为对你来说没有一个明确的解决方案。

但作为一种解决方法。

获取文件的修改日期

stat file.txt | grep Modify

现在完成你所做的操作后恢复上次修改日期

touch  -m -t [[CC]YY]MMDDhhmm[.SS]

下面解释一下上述格式:

  • CC – 指定年份的前两位数字
  • YY – 指定年份的最后两位数字。如果 YY 的值介于 70 和 99 之间,则假定 CC 数字的值是
  • 如果 YY 的值在 00 至 37 之间,则 CC 数字的值假定为 20。无法设置 2038 年 1 月 18 日之后的日期。
  • MM – 指定月份
  • DD – 指定日期
  • hh – 指定小时
  • mm – 指定分钟
  • SS – 指定秒

例如:更改我的 url.txt 文件的修改日期

stat url.txt | grep Modify

输出

Modify: 2015-05-04 09:42:28.148281881 +0300

修改为 04/05/2016 20:05:04

touch -m -t 201605042005.04 url.txt 

确保有效

stat url.txt | grep Modify

输出

Modify: 2016-05-04 20:05:04.000000000 +0300

相关内容