Очистить файл без изменения его отметки времени - PullRequest
3 голосов
/ 27 мая 2010

Можно ли очистить файл, сохранив его временную метку, используя стандартные команды Linux? Например:

echo ""> имя файла

преобразует текстовый файл в пустой, для меня это нормально. Но мне нужно сохранить временную метку без изменений.

Ответы [ 4 ]

7 голосов
/ 27 мая 2010

С помощью касания вы можете сделать следующее:

#!/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
2 голосов
/ 11 января 2013

Вы можете пропустить файл tmp, используя дату, чтобы записать строку с отметкой времени и передать ее обратно.

#!/bin/sh
# Save the timestamp
STAMP=`date -r file_name`
> file_name
# Restore the timestamp
touch -d "$STAMP" file_name
1 голос
/ 27 мая 2010

Здесь хорошая статья. Надеюсь, это поможет.

ДОБАВЛЕНО:

Извините, просто прочитайте, что вам нужен нулевой файл, а не копия. Прикосновение может создать ноль файлов с необходимыми отметками времени.

Пример

   To set the date to 7:30 am 1st October 2015
   touch /t 2015 10 01 07 30 00 MyFile.txt
0 голосов
/ 26 апреля 2015

В дополнение к ответу mmond (не могу комментировать из-за недостаточной репутации), не забывайте о локализации. Для работы с любой локализацией ответ должен выглядеть так:

#!/bin/sh
# Save the timestamp
STAMP=`LANG= date -r file_name`
> file_name
# Restore the timestamp
touch -d "$STAMP" file_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...