Как я могу получить возраст данного файла, по крайней мере, в днях?
Мне хорошо известны ls -lh
и похожие команды. Я хочу что-то, что будет работать примерно так:
getfage <FILE> # prints out '12d' (12 days)
Кроме того, это должно быть несколько кросс-платформенным, поскольку я также хотел бы использовать это в Mac OS X, но основной вариант использования на моем Linux-box.
НОТА
Поскольку Linux не отслеживает время создания, я ищу двойное решение: одно для mtime (linux) - это последний раз, когда указанный файл был изменен - и одно для Mac OS X, которое может иметь дело либо с время или время создания.
command-line
files
timestamps
Алексей Магура
источник
источник
stat
дает вам все, что вам нужно, верно?Ответы:
Unix не отслеживает дату создания. Единственная доступная информация - это, как правило, последние файлы:
( Из этого ответа )
Вы можете получить даты, связанные с конкретным файлом, используя
stat
команду.пример
OSX и HFS
Если вы используете OSX, то файловая система, используемая в Unix, - это HFS . Это один из немногих (что мне известно), который сохраняет дату создания в файловой системе, время модификации и т. Д. Аналогично другим Unixes.
выдержка
Timestamps
Временные метки всегда поддерживаются в файловой системе, поэтому вы ограничены каким-либо отслеживанием времени, предлагаемым через них (EXT3, EXT4, XFS и т. Д.).
Файловые
Если вам интересно, загляните в тему Википедии под названием « Сравнение файловых систем» . Он содержит самый обширный список файловых систем, о которых я знаю, а также симпатичную таблицу различных функций и состояния того, поддерживается ли он в данной файловой системе.
Ссылки
источник
OSX отслеживает создание файла, но большинство других устройств этого не делают, поэтому нет способа узнать, сколько времени прошло с момента создания файла. Вы можете получить истекшее время с момента его последнего изменения практически в любой операционной системе.
Нет никакой портативной утилиты оболочки, чтобы получить время модификации файла, кроме
ls
которой есть вывод, который почти невозможно проанализировать. В Linux следующая команда печатает возраст файла:Под Linux вы можете использовать
stat -c %Y -- "$filename"
как синонимdate +%s -r "$filename"
.OSX
date
иstat
команды разные. Вы можете использовать следующую команду:Во встроенных системах Linux и OSX по умолчанию установлен Perl.
источник
stat
Linux, системный вызов не был переработан, поэтому вам придется прибегнуть к взломуdebugfs
.Основываясь на ответе Жиля, вот функция bash, которая возвращает возраст файла в секундах или ошибку.
источник
Вы можете использовать
stat -f%B
,ls -lU
или,mdls -n kMDItemFSCreationDate
чтобы увидеть время создания (рождения) в OS X:источник
смотреть на
man stat
для-c
(формат) вариантовисточник