Linux изменить дату модификации файла

Настройка даты и времени в Linux – команда date

Как это часто бывает, всё самое важное скрывается за самыми простыми вещами. Так и в случае с установкой/настройкой даты и времени в системе. Некорректные значения этих параметров запросто ломают логику работы многих приложений, особенно это касается тех систем, где на этом построены целые сервисы, такие как интернет-магазины, SCADA-системы на производстве и т. д. Поэтому так важно следить за корректными настройками времени, даты, языковых форматов, а также уметь все эти параметры настраивать. В системах Linux всё это позволяет выполнять команда date.

Синтаксис и основные опции

Согласно официальной информации, доступной из справочного руководства (команда man date), синтаксис команды date следующий:

Если дать команду date без аргументов или если аргументы начинаются с символа «+», то по-умолчанию будет выведено текущие значения даты и времени. В ином случае производится установка даты и времени, передаваемые в аргументах в каком-либо из форматов. Например, для установки времени введите команду

MM — Месяц
DD — День,
hh — часы в 24-часовом формате,
mm — минуты,
YYYY — 4 цифры года,
ss — секунды.

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

Ниже мы боле подробно рассмотрим параметры ввода даты и времени.

Следующая команда выводит информацию о текущих дате и времени в форматированном виде:

Как видно, символ «+» позволяет печатать установленные (текущие) значения, а следующее за ним выражение задаёт формат вывода этих значений. Шаблон подстановки «%n» здесь служит для переноса строки. Все остальные шаблоны подстановки используются для выборки соответствующих компонент времени: месяцы, дни, часы, минуты и т. д. Само же выражение должно заключаться в кавычках, если в нём присутствуют пробельные символы.

Параметры CC, YY и .ss в синтаксисе date означают две последние цифры года, век и секунды (от 0 до 59) соответственно. И эти параметры не являются обязательными. Для того, чтобы устанавливать дату и время с помощью команды date, необходимы права суперпользователя.

В следующей таблице приводится описание основных опций команды date:

Опция Значение
-d, —date=STRING Вычисляет день недели для заданной даты в качестве STRING. Дата задаётся в формате ггммдд.
-f, —file=DATEFILE То же самое, что и -d, но для исходных данных используется содержимое из файла FILE.
-r, —reference=FILE Определяет время последней модификации файла FILE.
-s, —set=STRING Устанавливает время/дату, заданные строкой STRING.
-u, —utc, —universal Использование формата

Форматы ввода/вывода даты и времени

Для формата ввода даты/времени предусматриваются специальные элементы записи того или иного компонента даты/времени. В следующей таблице приводится описание этих элементов записи в виде пар букв, которым соответствуют составляющие даты и времени:

Элемент Описание
mm Минуты — от 0 до 59.
hh Часы — от 0 до 23.
DD Дни — от 0 до 28, 29, 30 и 31.
MM Месяцы — от 01 до 12.
Читайте также:  Microsoft visual studio последняя версия для windows 10 x64

Как уже можно было видеть, возвращаемые командой данные из её вывода можно форматировать произвольным способом, используя для этого специальные шаблоны подстановки или параметры форматирования. Они служат, как уже было отмечено выше, для выборки требуемых компонентов данных даты/времени из вывода команды date. Список этих параметров довольно длинный, но при этом его легко запомнить, поскольку наименования параметров довольно логичны. Следующая таблица отражает самые основные и часто используемые параметры форматирования:

Узнать время последнего изменения какого-либо файла:

Узнать день недели по его дате:

Вообще, команду date очень активно используют программисты для написания программного кода приложений, работающих с датой/временем, а также при написании скриптов для автоматизации некоторых процессов. Например, для автоматического наименования фалов, в имени которых содержится подстрока с датой его создания:

В результате будет создана копия файла settings.php под именем settings.php_back-070319. В данном случае используется директива $( ) для задания имени файла. Нужно заметить, что данный приём — очень мощный инструмент при работе в командной оболочке Linux.

Заключение

В заключение следует отметить отличную гибкость и большие возможности простой консольной утилиты, доступной по команде date, которая на первый взгляд не представляется заслуживающей внимания. Однако, команда date – это яркий пример «маленькой, но очень эффективной программы» в UNIX-подобных системах.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

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

Есть ли способ изменить дату, когда файл был изменен / создан (который отображается в Nautilus или с помощью команды ls -l)? В идеале я ищу команду, которая может изменить метки даты / времени целой пачки файлов на определенное количество времени раньше или позже (например, +8 часов или -4 дня и т. Д.).

7 ответов

Пока вы являетесь владельцем файла (или root), вы можете изменить время модификации файла, используя touch команда:

По умолчанию это установит время изменения файла на текущее время, но есть несколько флагов, таких как -d флаг, чтобы выбрать конкретную дату. Так, например, чтобы установить файл как изменяемый за два часа до настоящего, вы можете использовать следующее:

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

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

Вы можете изменить аргументы на find выбрать только те файлы, которые вам интересны. Если вы хотите обновить только время модификации файла относительно текущего времени, вы можете упростить это до:

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

Что касается времени создания, большинство файловых систем Linux не отслеживают это значение. E сть ctime связан с файлами, но он отслеживает, когда метаданные файла были в последний раз изменены. Если права доступа к файлу никогда не меняются, может случиться так, что он задержит время создания, но это совпадение. Явное изменение времени изменения файла считается изменением метаданных, поэтому также будет иметь побочный эффект обновления ctime ,

Источник

IgorKa — Информационный ресурс

Немного обо всем и все о немногом, или практический опыт системного администратора.

Июль 2010
Пн Вт Ср Чт Пт Сб Вс
« Июнь Авг »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Временные параметры файла — atime mtime ctime

Решил я сегодня уточнить значения параметров mtime, atime и ctime, которые присутствуют у каждого файла в Linux. На первый взгляд все вроде понятно:

mtimemodification time — время последней модификации (изменения) файла
atimeaccess time — время последнего доступа к файлу
ctimechange time — время последнего изменения атрибутов файла (данных которые хранятся в inode-области)

Но когда начинаешь спрашивать себя когда меняются эти параметры, в частности какие команды меняют их, а какие нет, и проверять на практике ответы на свои же вопросы — все не так очевидно. Особенно для каталогов, которые тоже являются разновидностью файлов в Linux. Вот решил поделится некоторыми экспериментами в этом направлении. Эксперименты проводил конечно же в своей Ubuntu 9.10 c файловой системой ext4. У ext4, кстати появилось два дополнительных временных параметра — время создания файла linux и время удаления файла linux, но о них в самом конце.

До начала своих экспериментов я предполагал следующее.
Параметр mtime — изменяется после того как изменяется содержимое файла. Например, открыли файл командой nano, дописали что-то, сохранили, закрыли, и время mtime поменялось. А как в случае с каталогами? Предполагал, что время модификации для каталога изменяется когда в каталоге создаются/удаляются файлы и подкаталоги.

Параметр atime — изменяется тогда, когда мы получаем доступ к файлу, например, той же командой nano мы получаем доступ к файлу. Значит atime должен измениться. Команды cat, less, tail выводят содержимое файла, значит мы получаем доступ к нему, но не меняем его поэтому mtime меняться не должен. А как быть с каталогами? Когда меняется atime для каталога? Тут я даже не знал, что себе ответить.

Параметр ctime — самый простой для моего понимания. Изменяется тогда когда изменяются права доступа к файлу (командой chmod), изменяется владелец файла (команда chown), создаются жесткие ссылки на файл (команда ln). В этом плане различий с каталогом нет, с той лишь разницей, что на каталоги нельзя создавать жесткие ссылки.

Вот примерно так я понимал значение временных параметров файлов. Практические эксперименты несколько расширили и изменили мои познания. Во время экспериментов проверку временных параметров проверял командой stat, которая показывает сразу все три временных атрибута. Если использовать команду ls, то по умолчанию она выводит время mtimels -l. ls -lu (или ls –time=atime|access|use) — выводит время atime — время последнего доступа к файлу. ls -lc (или ls –time=ctime|status) — выводит время ctime — время последнего изменения атрибутов.

Начал с параметра atime. Создаю в домашнем каталоге, каталог timetest и проверяю его временные метки командой stat (вывод результата сокращаю для экономии места):

Сейчас все временные метку равны друг другу так и должно быть. Далее захожу в каталог timetest и создаю пустой файл test, после чего проверяю временные метки каталога:

Источник

🐧 Как узнать время и дату изменения файла в системах Linux

В этом туториале показаны 4 простых способа получения даты последнего изменения файла в Linux.

Прочитав это руководство, вы будете знать, как проверить дату последней модификации файла с помощью команд ls, date и stat и бонус метод с MC.

Получение даты последнего изменения файла в Linux с помощью команды date

Первый способ узнать дату последней модификации файла в Linux, описанный в этой статье, основан на команде date.

Когда за командой date следует флаг -r, она показывает нам дату последней модификации файла.

Следующий пример показывает синтаксис для использования команды date, где itisgood – файл, дату последней модификации которого я хочу вывести.

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

Для получения дополнительной информации о команде date посетите сайт https://man7.org/linux/man-pages/man1/date.1.html.

Получение даты последнего изменения файла в Linux с помощью команды ls

Второй метод, описанный в этом руководстве, объясняет, как получить дату последнего изменения файла с помощью команды ls.

Сначала используем команду ls с флагом -l, как показано на скриншоте ниже.

Флаг -l указывает команде ls вывести список файлов в длинном формате.

Список в длинном формате включает дату последней модификации файла.

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

Четвертый столбец – размер.

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

В отличие от предыдущего метода с ls, вы получите список всех файлов в каталоге, включая даты их модификации.

Для упорядоченного вывода вы можете добавить флаг -t.

Флаг -t выведет упорядоченный по дате модификации вывод, показывая сначала последние измененные файлы.

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

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

Получение даты последнего изменения файла в Linux с помощью команды stat

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

Синтаксис довольно прост; просто запустите команду stat, за которой следует имя файла, дату последнего изменения которого вы хотите узнать, как показано в примере ниже.

Как вы можете видеть, вывод показывает больше информации, чем предыдущие команды.

Важно различать даты модификации и изменения.

Строка с именем Modify показывает последний раз, когда файл был изменен.

Строка с именем Change показывает последний раз, когда статус файла изменился; статус включает изменение прав, изменение владельца и т.д.

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

Получение даты последнего изменения файла в Linux с помощью команды midnight commander

Вы также можете запустить mc в каталоге, где лежит нужный нам файл и посмотреть дату изменения:

Заключение

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

Ни один из описанных методов не имеет особых преимуществ; все они могут быть реализованы легко и без установки дополнительных пакетов.

Для этого руководства я использовал Debian, но все описанные здесь команды доступны во всех дистрибутивах Linux.

Все описанные команды имеют дополнительные возможности, о которых вы можете узнать, прочитав man-страницы, указанные в конце каждого раздела.

Источник

Читайте также:  Не может установиться обновление windows 10 2004
Оцените статью