【发布时间】:2017-03-16 13:46:27
【问题描述】:
我正在使用以下 sed 命令来查找和替换字符串:
find dir -name '*.xml' -exec sed -i -e 's/text1/text2/g' {} \;
这会改变 dir 中所有 .xml 文件的时间戳
但是,如何保留旧的时间戳?
谢谢
【问题讨论】:
我正在使用以下 sed 命令来查找和替换字符串:
find dir -name '*.xml' -exec sed -i -e 's/text1/text2/g' {} \;
这会改变 dir 中所有 .xml 文件的时间戳
但是,如何保留旧的时间戳?
谢谢
【问题讨论】:
你可以使用而不是复制整个文件
touch -r <file> tmp
所以您将时间戳保存在 tmp 文件中但没有内容...
【讨论】:
使用stat 和touch
find dir -name '*.xml' -exec bash -c 't=$(stat -c %y "$0"); sed -i -e "s/text1/text2/g" "$0"; touch -d "$t" "$0"' {} \;
使用cp 和touch
find dir -name '*.xml' -exec bash -c 'cp -p "$0" tmp; sed -i -e "s/text1/text2/g" "$0"; touch -r tmp "$0"' {} \;
来自手册:
-p 与 --preserve=mode,ownership,timestamps 相同
-r, --reference=文件 使用此文件的时间而不是当前时间
-d, --date=字符串 解析 STRING 并使用它而不是当前时间
参考:
【讨论】: