清除文件而不更改其时间戳

时间:2010-05-27 10:30:20

标签: linux file timestamp

是否可以使用标准Linux命令清除保留其时间戳的文件?例如:

echo“”>文件名

将文本文件转换为空,这对我来说没问题。但我需要保持时间戳不变。

4 个答案:

答案 0 :(得分:7)

您可以使用触摸执行以下操作:

#!/bin/sh
TMPFILE=`mktemp`
#save the timestamp
touch -r file-name $TMPFILE
> file_name
#restore the timestamp after truncation
touch -r $TMPFILE file-name
rm $TMPFILE

答案 1 :(得分:2)

您可以使用日期记录时间戳字符串并将其传回触摸来跳过tmp文件。

#!/bin/sh
# Save the timestamp
STAMP=`date -r file_name`
> file_name
# Restore the timestamp
touch -d "$STAMP" file_name

答案 2 :(得分:1)

Here是一篇很好的文章。希望它有所帮助。

<强>增加:

抱歉,只需阅读,您需要零文件,而不是副本。 触摸可以创建带有所需时间戳的零文件。

实施例

   To set the date to 7:30 am 1st October 2015
   touch /t 2015 10 01 07 30 00 MyFile.txt

答案 3 :(得分:0)

要补充 mmond 的答案(由于声誉不足而无法发表评论),请不要忘记本地化。要处理任何本地化,答案应为:

#!/bin/sh
# Save the timestamp
STAMP=`LANG= date -r file_name`
> file_name
# Restore the timestamp
touch -d "$STAMP" file_name