Изменение метки времени файла в Linux - команда touch

Каждый файл в Linux ассоциирован с временной меткой, которая показывает время последнего доступа, последней модификации и последнего изменения.

Когда мы создаем новый файл или изменяем существующий или его атрибуты, эта временная метка автоматичекси изменяется
 
Touch - это команда которая используется для изменения временных меток (время доступа, время модификации и время изменения файла)
 
Данную команду Вы вряд ли будете использовать часто, но в некоторых случаях она может оказаться очень полезной
 
1. Создание нового файла используя touch
 
Вы можете создать пустой файл используя команду touch. Представленный ниже пример создаст файл нулевой длины с именем grnd.txt
$ touch grnd.txt
Вы также можете использовать опцию -с, чтобы избежать создания новых файлов. То бишь если мы используем ключ -c и файл с таким именем не существует, то команда touch не создаст этот файл.  
$ touch -c abcd.txt
Такие команды как ls и find используют информацию о временных метках для вывода и поиска файлов.
Вы также можете создать более одного файла используя только одну команду touch. Пример показывает создание 4 файлов с именами ab de fj kl
$ touch ab de fj kl
2. Изменение метки времени доступа к файлу  (Access)
 
Мы можем изменить метку о времени доступа к файлу используя ключ -a. По умолчанию установиться текущее системное время.
 
Сначала запустим команду команду stat, чтобы проследить дальнейшее изменение времени.
$ stat grnd.txt
  File: `grnd.txt'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d      Inode: 3408768     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1001/  alexey)   Gid: (    4/     adm)
Access: 2012-11-20 14:07:44.948481916 +0400
Modify: 2012-11-20 14:07:44.948481916 +0400
Change: 2012-11-20 14:07:44.948481916 +0400
 Birth: - 
Далее touch с ключом -a
$ touch -a grnd.txt

После выполнения команды опять проверим состояние файла:

$ stat grnd.txt
  File: `grnd.txt'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d      Inode: 3408768     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1001/  alexey)   Gid: (    4/     adm)
Access: 2012-11-20 14:27:29.264508552 +0400
Modify: 2012-11-20 14:07:44.948481916 +0400
Change: 2012-11-20 14:27:29.264508552 +0400
 Birth: -

3. Изменить метку временя модификации (Modify)

Вы можете изменить время модификации используя ключ -m
 
Пример:
$ touch -m *.o
Данную команду можно использовать для изменения времени модификации всех объектных файлов, например для использования утилиты make.
То бишь при использование данной команды возможно применение стандартных масок.
 
Примечание: Невозможно изменить метку времени изменения файла (Change) командой touch.
 
4. Явно задать время доступа и модификации 
 
Помимо того, что Вы можете изменить метки на текущее время, Вы также можете задать явные значение этих времен, то бишь то время, которое Вам необходимо. Для этого используются ключи -t и -d
 
Формат при использовании ключа -t будет - [[CC]YY]MMDDhhmm[.SS] -
 
$ touch -t [[CC]YY]MMDDhhmm[.SS]
 
Обозначения данного формата:
 
CC – Показывает первые две цифры года.
YY – Показывает последние две цифры года. Если значение YY находится между 70 и 99, то значение СС принимается как 19. А если значение YY jn 00 до 37, то СС будет установлено как 20. Невозможно задать дату более 18 Января 2038 года.
MM – Показывает месяц
DD – Указывает дату
hh – час
mm – минуты
SS – секунды
 
Пример:
$ touch -a -m -t 203710141103.24 grnd.txt

Проверим результат выполнения:

:~$ stat grnd.txt
  File: `grnd.txt'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d      Inode: 3408768     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1001/  alexey)   Gid: (    4/     adm)
Access: 2037-10-14 11:03:24.000000000 +0400
Modify: 2037-10-14 11:03:24.000000000 +0400
Change: 2012-11-20 15:08:04.992597671 +0400
 Birth: -

Рассмотрим другой пример с более удобочитаемой записью даты:

$ touch -d "2012-10-20 13:13:13.000000000 +0400" grnd.txt

Команда touch будет очень полезна для разработчиков, особенно если работать с Makefiles

 
5. Копировать метку времени с другого файла.
 
Вы также можете взять один файл как эталон и обновить метки времени другим файлам, то бишь другие файлы будут иметь метки времени такие же как и у эталонного.  Для этого используется ключ -r
 
Приведем пример, обновим метки времени файлу ab.txt взяв за эталон метки файла grnd.txt
$ touch ab.txt -r grnd.txt
Надеюсь данный материал будет Вам полезен, удачи!

 

Интересное на сайте: 
0
Голосов пока нет