Как получить время изменения файла

Обновлено: 07.07.2024

В некоторых случаях, пользователи ищут ответ на вопрос о том, как изменить дату создания файла Excel, Word, PowerPoint, JPG, PDF, MP3, MP4, или файлов других форматов. Подобная операция необходима в ситуациях, когда по каким-либо причинам нужно поменять даты создания файла, изменив его свойства.

Как поменять дату создания файла, можно ли изменить дату создания файла? Да, подобные манипуляции можно совершить с файлами или папками в Windows. Можно установить любую другую дату и время, как в прошлом, так и в будущем.

Это может понадобится, например, когда следует что-то скрыть, или выдать устаревшие файлы за новые, недавно созданные. Это могут быть файлы Ворд, Эксель, PowerPoint, файлы других текстовых форматов, видео, аудио, фотографии или другие изображения. Чтобы решить эту проблему, мы изменяем дату создания файла.

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

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

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

Для просмотра этой информации нужно выполнить следующие действия:

  1. Щелкните правой кнопкой мыши по файлу или папке.
  2. В контекстном меню нажмите на пункт «Свойства».
  3. В окне свойств файла или папки, во вкладке «Общие» отобразится информация о том, когда был создан файл или папка, когда был изменен, когда был открыт.

свойства файла

При создании или изменении файла, Windows ориентируется на текущее время в операционной системе. В свойствах файла или папки указывается соответствующее время, поэтому нам нужно изменить дату создания файла Windows.

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

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

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

Пройдите следующие шаги:

  1. Щелкните правой кнопкой мыши по отображению даты и времени в области уведомлений (системном трее).
  2. В контекстном меню нажмите на «Настройка даты и времени».

настройка даты и времени

  1. В открывшемся приложении «Параметры», во вкладке «Дата и время», в опции «Установить время автоматически» передвиньте ползунок переключателя в положение «Отключено».
  2. В настройке «Установка даты и времени вручную» нажмите на кнопку «Изменить».

изменить

  1. В окне «Изменить дату и время» введите нужные значения, а затем нажмите на кнопку «Изменить».

изменить дату и время

  1. Создайте новую папку на Рабочем столе компьютера. У этой папки будут новые заданные свойства даты и времени, отличающиеся от фактического временного периода.
  2. Откройте исходный файл Excel, Word, JPG, PNG, PDF, или другого формата в программе на ПК, предназначенной для открытия файлов данного типа.
  3. Войдите в меню «Файл» (в подавляющем большинстве программ), выберите «Сохранить как».

сохранить как

  1. В окне Проводника выберите новую созданную папку, а имя файла и расширение оставьте без изменений.
  2. Нажмите на кнопку «Сохранить».

сохранить

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

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

После завершения работ с изменением даты создания файла, верните текущую дату и время в настройках Windows:

  1. В приложении «Параметры» откройте настройку «Время и язык».
  2. Во вкладке «Дата и время», в разделе «Текущие дата и время», в опции «Установить время автоматически» передвиньте ползунок в положение «Включено».

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

С помощью популярного файлового менеджера Total Commander можно изменить дату и время создания файла. В программе Total Commander можно поменять свойства одного файла или сразу нескольких файлов в пакетном режиме.

Необходимо выполнить следующие рекомендации:

  1. Откройте программу Total Commander на компьютере.
  2. Выделите файл или несколько файлов.
  3. Войдите в меню «Файлы», в контекстном меню нажмите на «Изменить атрибуты…».

изменить атрибуты

  1. В окне «Изменение атрибута» поставьте галку в пункте «Изменение даты/времени», а затем установите подходящую дату и время.
  2. Нажмите на кнопку «Добавить атрибут».
  3. В опции «Поле:» выберите из контекстного меню «Дата создания», в опции «Значение:» нажмите на кнопку с двойными кавычками.
  4. Откроется окно «Дата создания», в котором можно поменять дату и время создания файла.

изменение атрибутов

  1. Нажмите на кнопку «ОК» в обеих окнах программы.
  2. Убедитесь, что в свойствах файла появились новые значения даты и времени.

значения даты и времени изменены

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

Как изменить дату создания содержимого файла в NewFileTime

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

NewFileTime можно скачать с официального сайта по этой ссылке . После загрузки на компьютер, распакуйте архив с программой.

В программе NewFileTime выполните действия:

  1. При первом запуске примите условия лицензионного соглашения.
  2. Перетащите файл или несколько файлов в окне программы.
  3. В полях «Дата изменения», «Дата создания», «Дата доступа» установите необходимые значения.
  4. Нажмите на кнопку «Установить время».

установить время

В свойствах файла внесены изменения, касающиеся даты создания, изменения или открытия файла.

Как изменить дату создания содержимого файла FileDate Changer

FileDate Changer — бесплатная программа от известного разработчика программного обеспечения NirSoft. Скачайте программу FileDate Changer с сайта разработчика здесь .

Распакуйте ZIP-архив с программой, а затем запустите приложение на компьютере.

Выполните следующие шаги:

  1. Перетащите файл в окно программы, или нажмите на кнопку «Add Files», для добавления файла с ПК. Поддерживается работа с файлами в пакетном режиме.
  2. В полях «Created Date» (дата создания), «Modified Date» (дата изменения), «Accessed Date» (дата доступа) установите подходящие значения для даты и времени.
  3. Нажмите на кнопку «Change Files Date» для применения изменений.

применение изменений

  1. Закройте программу FileDate Changer, проверьте результат работы.

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

BulkFileChanger — бесплатная утилита от NirSoft для массового изменения свойств файлов, аналог программы FileDate Changer с расширенными возможностями. Скачайте программу с официального сайта . Ссылки на загрузку находятся в нижней части страницы, там же нужно скачать язык локализации, чтобы русифицировать программу.

Выполните необходимые действия:

  1. Распакуйте архив с программой и архив с русским зыком.
  2. Поместите файл русского языка в папку с программой.
  3. Запустите программу BulkFileChanger из папки.
  4. Добавьте файл из интерфейса приложения или перетащите файлы с компьютера.
  5. Войдите в меню «Действия», в контекстном меню выберите пункт «Изменить время/атрибуты».
  6. В разделе «Дата и время файлов» установите подходящие значения.
  7. Нажмите на кнопку «Выполнить».

выполнить изменения

  1. Закройте программу, посмотрите свойства файла.

Выводы статьи

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

Этичный хакинг и тестирование на проникновение, информационная безопасность

Всё началось с того, что я заинтересовался, как найти в системе файлы созданные или изменённые за определённый промежуток времени. Например, как узнать, какие файлы в папке /etc были изменены за последний день или за последнюю неделю?

С этой задачей прекрасно справляется команда find, правда выяснилось, что у каждого файла доступны следующие метки времени:

  • Доступ
  • Модифицирован
  • Изменён
  • Создан

Чтобы понимать, что именно мы нашли, нужно чётко знать разницу между этими свойствами файла.

Именно этому и посвящена данная статья, в ней будет рассказано:

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

Все эти вопросы имеют практический смысл: от простого домашнего использования — поиск файла, для которого мы не помним имя, но для которого помним время создания; до серьёзного профессионального — появление новых файлов на сервере, либо недавние модификации важных файлов, могут свидетельствовать о взломе системы или неавторизованном доступе, могут помочь при расследовании подобных случаев для понимания событий произошедшего. Либо быть применены с противоположными мотивами — что и как нужно поменять в метках времени, чтобы снизить возможности криминалистического исследования.

Временные метки файла в файловой системе и в метаданных

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

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

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

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

Как посмотреть время создания, редактирования и открытия файла в Linux

Сразу все временные метки файла можно посмотреть с помощью команды stat. Запуск очень простой:

Например, я хочу узнать информацию о файле prog.txt:


С временем создания всё понятно — это когда файл был создан. Между прочим, эту информацию программа stat стала показывать довольно недавно. До этого на вопрос «как узнать время создания файла?» знатоки отвечали, что ядро Linux это не поддерживает. В качестве рабочего решения нужно было посмотреть иноду интересующего файла, а затем другой командой посмотреть дату создания этой иноды — это и считалось временем создания файла.

Выше показан вывод для команды на файловой системе ext4. Для файловой системы ext2 дата создания файла по-прежнему недоступна:


Теперь давайте разберёмся, что означают другие метки времени в Linux.

Что такое время доступа к файлу, время модификации файла и время изменения файла в Linux

Метки времени (timestamps):

Доступ (Access - last access) — время, когда файл был прочитан последний раз. Это время меняется при доступе таких системных вызовов как mknod(2), utimes(2) и read(2). Если это текстовый файл, то дата последнего доступа обновляется при каждом его открытии. Если это исполнимый файл, то дата доступа обновится при его запуске.

Но прежде чем придумывать практическое использование времени последнего доступа к файлу (например, чтобы проверить, какие команды запускалась за последний час), нужно учитывать очень важные нюансы. Выше показано, что поддержка определённых меток времени зависит от файловой системы. Ещё поведение меток времени зависит от того, с какими опциями была смонтирована файловая система. Например, при запуске скрипта мы ожидаем, что время доступа к этому файлу изменится на текущее. Это так — для выполнения скрипта его нужно прочитать и atime должна поменяться на время выполнения. Обычно это так и происходит. Но если запускаемый/читаемый файл находится в файловой системе, которая смонтирована с опциями noatime или relatime (или другими возможными опциями, которые могут повлиять на изменение atime — к пример «только чтение»), то поведение будет другим.

noatime

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

relatime

Обновлять время доступа к иноде относительно времени модификации или изменения. Время доступа обновляется только если предыдущее время доступа было более старым, чем время модификации или изменения, либо если предыдущее время доступа старше 1 дня.

Итак — время последнего доступа к файлу может быть неточным! По сути, если при монтировании диска используется опция relatime, то получается, что оно показывает:

1) время последнего изменения или модификации файла

2) время сегодняшнего первого открытия файла

3) ИНОГДА оно действительно показывает время последнего доступа к файлу (если сегодня файл открывали только один раз), либо если этот доступ к файлу выполнен после его модификации или изменения статуса

Модифицирован (Modify - last modified) — время последнего изменения содержимого файла. То есть если это текстовый файл, то время модификации поменяется когда вы его откроете и удалите какое-то слово или что-то допишите. Меняется системными вызовами mknod(2), utimes(2) и write(2).

Изменён (Change - last changed) — Время последнего изменения метаданных файлов в файловой системе. То есть если в файле изображения вы измените EXIF метаданные — это будет модификация (поскольку по сути поменяется содержимое файла). Примером Изменения файла является смена разрешений доступа к нему (чтение, запись, выполнение), смена владельца, группы и т. д. Меняется с chmod(2), chown(2), link(2), mknod

Что такое время доступа, время модификации и время изменения директории в Linux

Посмотреть метки времени папки можно также с помощью команды stat:

Например, чтобы посмотреть информацию о текущей папке:

Для папок время последнего доступа обновляется при просмотре списка файлов внутри неё. Действуют такие же правила, как и для файлов — зависит от опций, с которыми смонтирована файловая система.

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

Какое время показывает команда ls -l

Если запустить команду ls с опцией -l, то она покажет последнее время модификации содержимого файла (или директории). Используя опцию --time можно вызвать показ других меток времени:

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

Если добавить опцию --sort=time, то будет также выполнена сортировка по выбранной метки времени.

Имеется несколько сокращённых опций:

Можно выбрать формат времени:

Значением TIME_STYLE могут быть: full-iso, long-iso, iso, locale или +ФОРМАТ.

Значение ФОРМАТа как в date(1). Если значение ФОРМАТа равно ФОРМАТ1<новая строка>ФОРМАТ2, то ФОРМАТ1 применяется не к последним файлам, а ФОРМАТ2 к новым. Если TIME_STYLE начинается с «posix-», то он применяется только для локалей отличных от POSIX. Также, используемый стиль по умолчанию задаёт переменная окружения TIME_STYLE.

Есть сокращение популярного варианта:

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

Теперь мы переходим к потрясающей команде find. С её помощью мы будем выводить нужные файлы по дате изменения, а также искать файлы, которые были изменены или к которым был получен определённое время назад.

Кстати, настоятельно рекомендуется к изучению следующий материал по команде find:

С помощью команды find можно настроить очень гибкий поиск и вывод результатов.

Предположим, я хочу просмотреть файлы в папке /etc отсортированные по дате модификации:

Аналогично, но файлы отсортированы по дате доступа:

И снова аналогичный пример, но файлы отсортированы по времени изменению статуса:

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

Или только файлов с расширением .desktop:

Или любых файлов, отсортированных по дате доступа, но только первых 20:

Поиск файлов по времени изменения

Для этого мы опять будем использовать команду find. Для поиска по времени у неё есть следующие опции:

-amin n

Последний раз к файлу был совершён доступ n минут назад.

-atime n

К файлу был совершён доступ n*24 часов назад. Когда find определяет, как много 24-часовых периодов назад к файлу был совершён доступ, любая дробная часть игнорируется, поэтому для соответствия -atime +1 к файлу должен быть сделан доступ по крайней мере два дня назад.

-cmin n

Статус файла был изменён последний раз n минут назад.

-ctime n

Последний раз статус файла был изменён n*24 часов назад. Смотрите комментарий для -atime для понимания, как округление влияет на интерпретацию времени изменения статуса файла.

-mmin n

Данные файла последний раз были изменены n минут назад.

-mtime n

Данные файла были изменены последний раз n*24 часов назад. Смотрите комментарий для -atime для понимания, как округление влияет на интерпретацию времени модификации файла.

То есть если в опции слово min — то число n трактуется как минуты, а если в опции присутствует слово time, то n трактуется как сутки.

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

С find можно строить весьма сложные конструкции условий чтобы найти именно то, что вам нужно. Далее всего несколько примеров — но количество возможностей безгранично. С опцией -name можно указывать шаблон имени, можно комбинировать с поиском по любым другим свойствам файла: размер, права доступа и т.д.

Чтобы найти все файлы, содержимое которых было изменено ровно 50 дней назад:

Чтобы найти все файлы, к которым был получен доступ ровно 50 дней назад:

Чтобы найти все файлы, содержимое которырх было модифицировано более 50 дней назад и менее 100 дней назад:

Чтобы найти файлы, статус которых был изменён за последний час:

Чтобы найти файлы, которые содержимое которых было модифицировано за последний час:

Чтобы найти все файлы, доступ к которым был сделан за последний час:

Чтобы найти все файлы в текущей папке с расширением .php, которые были изменены или созданы за последние 10 дней:

Чтобы найти все исполнимые файлы в текущей папке, которые были изменены или созданы за последние 10 дней:

Как отредактировать метки времени файла

С помощью команды touch можно изменить три метки времени файла или папки:

  • время доступа
  • время модификации
  • время изменения статуса

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

Можно отдельно поменять только время доступа или только время модификации, соответствующие опции:

С помощью опции -t можно установить любое время, на которое мы хотим поменять метки файла. Формат указания времени следующий:

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

  • CC – Первые две цифры года (от слова century — века)
  • YY – Вторые две цифры года
  • MM – Месяц года (01-12)
  • DD – День месяца (01-31)
  • hh – Часы дня (00-23)
  • mm – Минуты часа (00-59)
  • ss – Секунды (00-59)

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

С помощью опции -t невозможно указать доли секунды и в выводе команды stat на их месте всегда будет 000000000

С помощью опции -d можно использовать разные более человечные способы указать время, например, «две недели назад». Это должно работать на английском, не знаю как с национальными языками. Опция -d (судя по описанию) понимает много разных вариантов синтаксиса, но для меня самым интересным свойством является возможность установить доли секунды, чтобы метки времени выглядели естественно, поскольку временные метки с девятью нулями на конце наводят мысль о том, что они спуфлены. Пример установки времени с указанием долей секунды:

То есть формат строки такой (из неё можно пропустить дефисы и двоеточия — опция -d всё равно её поймёт, но я их добавил для наглядности):

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

Хотя файловая система ext4 поддерживает такое свойство файлов как «время создания», в ядро Linux возможность чтения этого свойства была добавлена недавно. Что касается возможности изменения времени создания файла, то такой функции нет (и не факт, что файловые системы это вообще поддерживают).

Но, как обычно, можно что-то придумать.

Время назад

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

Изменение времени создания в других ОС или файловых системах

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

Действительно, в Windows можно изменить не только время модификации файла, но и время создания. Но проблема в том, что при переносе в Linux сохраняется только время модификации. В качестве времени создания записывается текущее (то есть время создания иноды в файловой системе). И если это понимать — что временем создания файла является время модификации иноды, то становится понятно, невозможно никак перенести файл (ни в архиве, ни как-то ещё) с сохранением временем создания.

Также становится понятно, что из Windows невозможно изменить время создания файла, который находится в совместной папке в файловой системе ext4 (хотя я на всякий случай попробовал).

То есть вариантов поменять дату создания файла в Linux всего два: 1) поменять время системы; 2) низкоуровневое редактирование файловой системы (например, шестнадцатеричным редактором или специальными инструментами (если они существуют)) — с соответствующими рисками нарушить целостность файловой системы.

То есть плохая новость в том, что изменить время создания файла очень трудно или практически невозможно. Но хорошая новость в том, что время создания файла на практике почти не используется из-за того, что это поддерживают не все файловые системы, и в самой Linux эта поддержка появилась недавно. Например, команда find ничего не знает о времени создания файла (хотя может искать по другим трём меткам времени: модификация, доступ, изменение статуса), команда ls также не умеет отображать время создания файла (только обычные три метки времени).

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

Как изменить время создания и модификации файла в Windows

Кстати, если вам интересно, как поменять время создания файла в Windows, то это можно сделать с помощью утилиты NirCmd:

Я проверил команду nircmd.exe — сработала идеально в последней Windows 10.


Заключение

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

Я об этом уже говорил, но напомню ещё раз — редактируя метки времени файла, не нужно забывать о соответствующих метках времени в метаданных самого файла (а не файловой системы). Про просмотр и удаление метаданных вы найдёте больше информации по ссылкам:

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

Что самое лучшее кросс-платформенный способ получить дату/время создания и изменения файла в Python?

получить какую-то дату модификации кросс - платформенным способом легко-просто позвоните os.path.getmtime(path) и вы получите метку времени Unix, когда файл в path последнего изменения.

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

On Linux, в настоящее время это невозможно, по крайней мере, без написания расширения C для Python. Хотя некоторые файловые системы обычно используются с Linux хранить даты создания (например, ext4 сохраняет их в st_crtime ), ядро Linux не предлагает никакого способа доступа к ним; в частности, структуры, которые он возвращает от stat() вызовы на языке C, начиная с последней версии ядра,не содержат полей даты создания. Вы также можете увидеть, что идентификатор st_crtime в настоящее время не имеет нигде в исходным кодом на Python. По крайней мере, если вы на ext4 , данных и прикреплен к кодам в файловой системе, но нет удобного способа доступа к нему.

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

у вас есть несколько вариантов. Во-первых, вы можете использовать os.path.getmtime и os.path.getctime функции:

Примечание: ctime() тут не см. время создания в системах * nix, но скорее последний раз, когда данные индекса изменились. (спасибо Кодзиро за то, что он прояснил этот факт в комментариях, предоставив ссылку на интересный блог post)

лучшая функция для этого -os.путь.getmtime(). Внутренне, это просто использует os.stat(filename).st_mtime .

модуль datetime является лучшим манипулированием метками времени, поэтому вы можете получить дату изменения как datetime объект вроде этого:

edit: в новом коде вы, вероятно, должны использовать os.путь.getmtime() (спасибо христианской Oudard)
но обратите внимание, что он возвращает значение с плавающей запятой time_t с долей секунды (если ваша ОС поддерживает его)

существует два метода для получения времени mod, os.путь.getmtime() или OS.stat (), но ctime не является надежным кросс-платформенным (см. ниже).

os.путь.getmtime()

getmtime(путь)
возвращает время последней модификации путь. Возвращаемое значение-это число, дающее количество секунд с начала эпохи (см. модуль). Поднять ОС.ошибки если файл не не существует или недоступна. Новое в версия 1.5.2. Изменено в версии 2.3: если ОС.stat_float_times () возвращает True, результатом является число с плавающей запятой.

os.stat ()

stat(путь)
выполните системный вызов stat () по заданному пути. Возвращаемое значение-это объект, атрибуты соответствуют элементам структуры stat, а именно: st_mode (защита бит), st_ino (номер inode), st_dev (устройства), st_nlink (количество ссылки), st_uid (идентификатор пользователя владельца), st_gid (идентификатор группы владельца), st_size (размер файла, в байтах), st_atime (время последнего доступа), тип доступа (время последнего контента модификация),st_ctime (зависит от платформы; время последнего изменения метаданных в Unix или время создания в Windows):

Я использовал следующую команду, чтобы получить дату файла. Однако переменная fileDate возвращала пустое значение с тех пор, как мы переехали на другой сервер (Windows Server 2003).

Есть ли другой более надежный способ узнать дату файла?

Измените % на %% для использования в пакетном файле, для синтаксиса %

ta введите call /?

Ты можешь это сделать

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

Чтобы получить дату / время последнего изменения файла независимо от локали , вы можете использовать wmic команда с псевдонимом DataFile :

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

Чтобы получить значение даты / времени, используйте for /F , затем вы можно присвоить его переменной с помощью set :

Второй цикл for /F позволяет избежать артефактов (например, потерянных символов возврата каретки) при преобразовании вывода Unicode wmic в текст ASCII / ANSI с помощью первого цикла for /F (см. Также этот ответ).

Чтобы получить дату / время создания или дату / время последнего доступа, просто замените свойство LastModified на CreationDate или LastAccessed соответственно. Чтобы получить информацию о каталоге, а не о файле, используйте псевдоним FSDir вместо DataFile .

Чтобы указать пути / имена файлов (или каталогов), содержащие как , , так и ) , которые обычно не принимаются wmic , просмотрите этот вопрос.

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

У меня работает на Vista. Некоторые вещи, которые стоит попробовать:

Замените find полным путем команды find. find - это общее название инструмента. Есть находка для UNIX, которая сильно отличается от встроенной в Windows. вот так:
FOR /f %%a in ('dir ^|%windir%\system32\find.exe /i "myfile.txt"') DO SET fileDate=%%a

проверьте вывод команды в окне cmd.exe. Для этого вам нужно заменить %% на%.
FOR /f %a in ('dir ^|c:\windows\system32\find.exe /i "myfile.txt"') DO SET fileDate=%a
Это может дать вам некоторые идеи.

Если это отображается как пустое, снова в командной строке попробуйте следующее:

dir | c:\windows\system32\find.exe /i "myfile.txt"

Это должно показать вам то, что вам нужно увидеть.

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

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

Сохраните приведенное выше как mygetdate.vbs и в командной строке

/ T: C - время и дата создания
/ T: A - время и дата последнего доступа
/ T: W - Время и дата последней записи (по умолчанию)

Результат выполнения приведенной выше команды даст множество дополнительных сведений, которые вам, вероятно, не понадобятся, поэтому вы можете включить две команды FINDSTR для удаления пустых строк, а также любые ссылки на «Том», «Каталог» и «байты»:

Попытки включить цель пустой строки (/ c: «^ $» или «^ $») в одну команду FINDSTR не приводят к удалению пустых строк (или вызывают другие ошибки) при выводе результатов в текстовый файл.

Это более чистая команда:

Если вы можете использовать EXE, я рекомендую gdate.exe (из GNU CoreUtils для Windows). Он может указывать текущую дату или дату файла во многих различных форматах и ​​настраиваться. Я использую его, чтобы получить последнюю измененную дату и время файлов, которые я могу сравнить без какого-либо анализа (т.е. локально-независимый), используя %s (секунды с начала эпохи), необязательно с %N для получить наносекундную точность.

Какой вывод (точно) дает dir myfile.txt в текущем каталоге? Что будет, если установить разделители?

(обратите внимание на пробел после delims= )
(чтобы облегчить жизнь, вы можете сделать это из командной строки, заменив %%a на %a )


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

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

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

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

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


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

Получение даты последнего изменения файла в 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-страницы, указанные в конце каждого раздела.

Читайте также: