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

Вы могли использовать что-то, любят, находят и вид.

find . -type f -ls | sort -r -n -k7

( -ls опция не является стандартной, но найдена во многих, находят реализации, не только GNU один. В GNU находят и другие, он отображает что-то подобное ls -li за немногим исключением, например, файлы с ACLs не отмечены с +),

Если имена файлов могут содержать символы новой строки, с GNU находят и вид GNU:

find . -type f -ls -printf '\0' | sort -zk7rn | tr -d '\0'
12
27.11.2013, 18:33
6 ответов

Unix не отслеживает дату создания. Единственная информация это доступно, обычно прошлые разы, файлы были:

  1. Полученный доступ
  2. Измененный
  3. Измененный
  • Доступ - прошлый раз файл был считан
  • Измените - в прошлый раз, когда файл был изменен (содержание было изменено),
  • Изменение - прошлый раз метаданные файла был изменен (например, полномочия)

(Из этого ответа)

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

Пример

$ stat ffmpeg 
  File: `ffmpeg'
  Size: 19579304    Blocks: 38248      IO Block: 4096   regular file
Device: fd02h/64770d    Inode: 10356770    Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (  500/    saml)   Gid: (  501/    saml)
Access: 2013-11-26 10:49:09.908261694 -0500
Modify: 2013-11-02 17:05:13.357573854 -0400
Change: 2013-11-02 17:05:13.357573854 -0400

OSX и HFS

Если Вы используете OSX файловая система, это используется, под которым Unix является HFS. Это - один из некоторых (что я знаю), который сохраняет дату создания в файловой системе, наряду со временем изменения и т.д. подобной другому Unixes.

выборка

Магазины звукозаписей Файла множество метаданных о файле включая его CNID, размер файла, три метки времени (то, когда файл был создан, в последний раз изменило, в последний раз сохраненный), первые степени файла ветвей данных и ветвей ресурсов и указателей на первые данные файла и записи степени ресурса в Файле Переполнения Степени. Запись Файла также хранит два 16-байтовых поля, которые используются Средством поиска, чтобы сохранить атрибуты о файле включая вещи как его код создателя, ввести код, окно, файл должен появиться в и его местоположение в окне.

Метки времени

Метки времени всегда сохраняются в файловой системе, таким образом, Вы ограничены к любому времени, отследив, предлагается через них (EXT3, EXT4, XFS, и т.д.).

Файловые системы

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

Ссылки

16
27.01.2020, 19:54
  • 1
    Спасибо за обновление, которое помогает. На самом деле я считал здесь, что ext4 может сохранить даты создания, но это еще не было реализовано в ядре. –  terdon♦ 27.11.2013, 04:26
  • 2
    @terdon - да это имеет смысл, что некоторые файловые системы поддерживали бы его. Это кажется запоздалым мне, я понимаю в прошлом, почему это было не учтено, но все совершенствовалось так, так как начало, что это не имеет смысла к явно не, имеет это. Также можно отключить поддержку в течение времени доступа, таким образом, она могла быть реализована так же и затем отключена, если бы Вы действительно не хотели ее. –  slm♦ 27.11.2013, 04:35

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

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

echo $(($(date +%s) - $(date +%s -r "$filename"))) seconds
echo $((($(date +%s) - $(date +%s -r "$filename")) / 86400)) days

В соответствии с Linux, можно использовать stat -c %Y -- "$filename" как синоним date +%s -r "$filename".

OSX's date и stat команды отличаются. Можно использовать следующую команду:

echo $(($(date +%s) - $(stat -t %s -f %m -- "$filename"))) seconds

Невстроенным системам Linux и OSX установили Perl по умолчанию.

perl -l -e 'print -M $ARGV[0], " days"' "$filename"
18
27.01.2020, 19:54
  • 1
    Это зависит от ОС или файловой системы? Это Вопросы и ответы, кажется, подразумевают, что файловая система сохраняет их, но ядро должно предоставить метод для доступа к ним. Предположения № 1 –  terdon♦ 27.11.2013, 02:55
  • 2
    @terdon - посмотрите мои обновления. –  slm♦ 27.11.2013, 04:18
  • 3
    @terdon Оба. То, что Вопросы и ответы, которые Вы связываете, корректны, текущие файловые системы отслеживали время создания некоторое время теперь. В FreeBSD можно на самом деле достигнуть это от stat, в Linux syscall не был переделан так, необходимо обратиться к взламыванию с debugfs. –  wingedsubmariner 27.11.2013, 06:20
  • 4
    @wingedsubmariner С протестом, что время создания в файловой системе часто является не датой создания в приложении, стольких же приложений, использует create-new-then-move сколько метод для сохранения новой версии, а не перезаписи на месте. –  Gilles 'SO- stop being evil' 27.11.2013, 12:16

Можно использовать stat -f%B, ls -lU или mdls -n kMDItemFSCreationDate, чтобы увидеть время создания (рождения) в операционной системе X:

$ stat -f%B file
1402340803
$ ls -lU file
-rw-r--r--  1 admin  staff  108514 Jun  9 22:06 file
$ mdls -n kMDItemFSCreationDate file
kMDItemFSCreationDate = 2014-06-09 19:06:43 +0000
$ echo $((($(date +%s)-$(stat -f%B file))/86400))
10
0
27.01.2020, 19:54

На основе ответа Жиля, здесь функция bash, которая возвращает возраст файла в секундах или ошибку.

function fileAge
{
    local fileMod
    if fileMod=$(stat -c %Y -- "$1")
    then
        echo $(( $(date +%s) - $fileMod ))
    else
        return $?
    fi
}
4
27.01.2020, 19:54
stat -c %Y <filename>

mira man statpara-c(formato )opciones

1
27.01.2020, 19:54

Для стандартного Unix stat -c %Y, как видно из других ответов, дает вам время «последнего изменения». Но в некоторых случаях вам может понадобиться «время изменения инода» -, когда метаданные в последний раз менялись. Он обновляется, когда вы впервые создаете файл, а затем, когда вы выполняете такие действия, как chmod(, которые в большинстве случаев вы не будете делать -, поэтому во многих случаях он остается исходным временем создания ). Это можно вывести с помощью stat -c %Z.

0
01.10.2021, 17:03

Теги

Похожие вопросы