Перейти к содержимому

Как изменить дату создания файла linux

  • автор:

Изменение даты создания и даты модификации файла

только, пожалуйста, либо уберите из вопроса «дату создания», либо добавьте в ответ упоминание о том, что для подавляющего большинства случаев такой «даты» просто не существует: она никаким образом не фиксируется, а, следовательно, и не модифицируется.

28 мар 2018 в 21:35

@alexanderbarakin, я не поняла. В смысле для подавляющего большинства случаев такой «даты» просто не существует ?

30 мар 2018 в 14:56

наиболее компактное из найденных за две минуты описаний ситуации: superuser.com/a/703927/454489 // ну а вообще: google://unix+ctime

30 мар 2018 в 15:11

Правильнее тогда будет написать изменение метаданных в которых фигурируется значение «creation time» и «modification time» ? И да, почему вы просите убрать, когда можете сделать это сами, т.к есть нужное кол-во репутации ?

Массово изменить дату создания файлов

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

Max77
11.05.22 22:51:32 MSK

  • Ответить на это сообщение
  • Ссылка

–preserve[=ATTR_LIST] preserve the specified attributes (default: mode,ownership,time‐ stamps), if possible additional attributes: context, links, xattr, all

SpaceRanger ★★
( 11.05.22 23:00:40 MSK )
Последнее исправление: SpaceRanger 11.05.22 23:01:18 MSK (всего исправлений: 1)

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от SpaceRanger 11.05.22 23:00:40 MSK

Не пойдет, так как файлы уже скопированы, а оригиналы с карт памяти удалены

Max77
( 11.05.22 23:07:26 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Да, это называется «скрипт-однострочник на bash».

Vsevolod-linuxoid ★★★★★
( 11.05.22 23:09:06 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от Vsevolod-linuxoid 11.05.22 23:09:06 MSK

Тоже в этом направлении думаю

Нужно в каталоге последовательно читать время изменения файла и через touch устанавливать время создания?

Max77
( 11.05.22 23:12:03 MSK ) автор топика

  • Ответить на это сообщение
  • Ссылка

Ух ты, первый раз вижу кого-то кто интересуется содержанием какого-либо таймстапма файла кроме даты модификации. Ещё много какой софт, думаю, забивает на atime/ctime/birthtime.

firkax ★★★★★
( 12.05.22 02:17:21 MSK )
Последнее исправление: firkax 12.05.22 02:17:54 MSK (всего исправлений: 1)

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Ответ на: комментарий от firkax 12.05.22 02:17:21 MSK

digiKam считает, что фото двухлетней давности отсняты вчера. Отсюда и интерес к дате создания

Max77
( 12.05.22 08:27:44 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Для пакетного изменения экзифа есть exiftool. Примеры в гугле в изобилии.

Entmatix ★
( 12.05.22 08:41:30 MSK )

  • Ответить на это сообщение
  • Показать ответ
  • Ссылка

Не на всякой файловой системе хранится время создания файла.

akk ★★★★★
( 12.05.22 10:34:32 MSK )

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от Max77 12.05.22 08:27:44 MSK

debugfs в помощь

vel ★★★★★
( 12.05.22 11:46:10 MSK )

  • Ответить на это сообщение
  • Ссылка

Ответ на: комментарий от Entmatix 12.05.22 08:41:30 MSK

Проблема не в EXIF. С ним как раз все нормально.

Проблема в crtime

Вот пример кадра с камеры, скопированного на диск

$ stat ~/Test/IMG_3379.CR2 Файл: /home/max/Test/IMG_3379.CR2 Размер: 24955660 Блоков: 48744 Блок В/В: 4096 обычный файл Устройство: 0/44 Инода: 255026 Ссылки: 1 Доступ: (0644/-rw-r--r--) Uid: ( 1000/ maxim) Gid: ( 1000/ max) Доступ: 2021-09-13 04:00:00.000000000 +0400 Модифицирован: 2019-10-24 20:56:26.000000000 +0400 Изменён: 2022-05-12 22:41:04.006824106 +0400 Создан: 2022-05-12 22:41:04.006824106 +0400 

Если я его добавляю в альбом через digiKam, то digiKam считает, что фото снято сегодня, а не в октябре 2019 года

Max77
( 12.05.22 21:51:59 MSK ) автор топика

  • Ответить на это сообщение
  • Показать ответы
  • Ссылка

Ответ на: комментарий от Max77 12.05.22 21:51:59 MSK

Копирование файлов между разными FS может привести к подобному, к сожалению

Dimez ★★★★★
( 13.05.22 00:25:21 MSK )

  • Ответить на это сообщение
  • Ссылка

Как изменить дату создания файла linux


Next: Разделение файла на меньшие Up: Средства управления файлами Previous: Определение типа и формата Contents Index

Для изменения времени модификации файла без исправлений его содержимого используйте команду touch. Укажите имя требуемого файла в качестве аргумента. По умолчанию время модификации устанавливается на текущий момент.

Чтобы сменить время модификации файла `pizzicato’ на текущий момент, введите:

$ touch pizzicato [Enter]

Если Вы хотите установить иное время модификации, укажите опцию `-d’ и требуемые дату и время в апострофах. Вы можете указать либо дату, либо время, либо и то и другое.

Для установки времени модификации файла `pizzicato’ на `17 мая 1999 14:16′, введите:

$ touch -d ’17 May 1999 14:16′ pizzicato [Enter]

Примечание: Если указать только дату, время устанавливается в `0:00′; если не указывать год, будет использован текущий.

Alex Otwagin 2002-12-16

Изменение метки времени файла в 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 – Указывает дату
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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *