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

от admin

Общие случаи использования команды Touch в Linux

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

Команда «touch» — это программа, используемая в операционных системах Linux для создания, редактирования и изменения временных меток конкретного файла.

Создание пустого файла в Linux

Команда touch используется для создания нового пустого файла. Чтобы создать новый файл, выполните в терминале следующую команду:

Создание нескольких файлов в Linux

Команда touch также используется для создания более чем одного файла. Следующая команда используется для создания нескольких файлов:

Изменение времени модификации и доступа к файлу

Вы можете обновить или изменить время последней модификации и доступа к файлу. Параметр -a используется с командой touch следующим образом.

Вышеупомянутая команда изменяет дату и текущее время на файле. Если файл ‘file’ не существует, то в этом случае будет создан новый файл с аналогичным именем.

Используйте параметр -c, чтобы избежать создания нового файла

Команда touch с опцией -c используется для того, чтобы избежать создания нового файла. Например, пустой файл с именем ‘test’ не будет создан в системе, если файл не существует. Введите в терминале следующую команду:

Изменение времени модификации файла

Если вы хотите изменить только время модификации, а не время последнего доступа к ‘file’, то используйте команду touch с опцией -m. Используйте следующую команду в терминале для выполнения этого действия:

Явная установка времени модификации и доступа к файлам

Вы можете явно изменить время модификации и доступа к файлу. Основной формат этой команды приведен ниже:

Например, если вы хотите установить дату модификации и время доступа к файлу ‘file’ как 17:30 (17:30 вечера) 2 января текущего года (2022).

Копирование временной метки других файлов

Команда touch с опцией -r используется для обновления временной метки файла ‘file-2’ и замены ее временной меткой файла ‘file-1’. Оба файла будут иметь одинаковую временную метку:

Создание файла с заданным временем

Если вы хотите создать файл с заданным временем вместо того, чтобы назначить текущее время, то используйте следующий формат команды:

Например, если вы хотите использовать команду touch с опцией -t, то файлу ‘file’ будет присвоена временная метка 17:30:40 вечера 03 января 2020 года.

Опции touch

Некоторые полезные опции команды touch с указанием их назначения:

-a — используется только для обновления времени доступа
-c — используется, когда файл не существует, тогда не нужно создавать новый файл
-d — используется для изменения как времени модификации, так и времени доступа
-m — используется для обновления только времени модификации
-r — используется для того, чтобы сделать время доступа и время модификации аналогичными другому файлу
-t — используется для создания файла с указанным временем.

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

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

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

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

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

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

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

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

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

Читать:
Svcutil exe где находится

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

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

debugfs в помощь

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

Проблема в crtime

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

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

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

натравить на каждый файл touch -r ??

digiKam считает датой фото время создания файла. При живом EXIF.

Если так, то это реальное основание направить им багрепорт, поможешь себе и другим. Только сначала в настройки дигикама глянь, вдруг это поведение где-то меняется…

Быстрый гуглёж, кстати, показывает, что там есть некая галочка Show modification time…

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

Как изменить дату модификации и создания файла в Linux ?

Tanya's user avatar

В терминале вводим :

Где :

1998 — год
07 — месяц
08 — день
12 — час
15 — минута
.25 — секунда

А можно использовать ключ -d , который принимает строковое значение :

Ключи :
-m Дата модификации
-a Дата открытия файла
-t Отметка времени

Tanya's user avatar

Изменяем системное время.

sudo date —set 10/04/2019

Создаем и модифицируем файл.

Синхронизируем часы, в Arch Linux.

sudo timedatectl set-ntp true

creio's user avatar

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

How can I change the date modified/created of a file?

Is there a way to change the date when a file was modified/created (which is shown in Nautilus or with the ls -l command)? Ideally I am looking for a command which can change the date/time stamps of a whole bunch of files to a certain amount of time earlier or later (e.g. +8 hours or -4 days etc.).

6 Answers 6

As long as you are the owner of the file (or root), you can change the modification time of a file using the touch command:

By default this will set the file’s modification time to the current time, but there are a number of flags, such as the -d flag to pick a particular date. So for example, to set a file as being modified two hours before the present, you could use the following:

If you want to modify the file relative to its existing modification time instead, the following should do the trick:

If you want to modify a large number of files, you could use the following:

You can change the arguments to find to select only the files you are interested in. If you only want to update the file modification times relative to the present time, you can simplify this to:

This form isn’t possible with the file time relative version because it uses the shell to form the arguments to touch .

As far as the creation time goes, most Linux file systems do not keep track of this value. There is a ctime associated with files, but it tracks when the file metadata was last changed. If the file never has its permissions changed, it might happen to hold the creation time, but this is a coincidence. Explicitly changing the file modification time counts as a metadata change, so will also have the side effect of updating the ctime .

Похожие статьи