Наиболее нейтральным для файловой системы и распространения решением (которое я могу придумать) является использование самого старого файла, заданного командой ls -lact / etc
, которая проверяет метаданные каждого файла на время создания. Хотя в это можно играть, на него не влияет touch
или файлы, созданные путем распаковки архивов (например, tar -p
для сохранения временных меток).
Я думаю, что лучше смотреть на файлы, а не на каталоги, поскольку каталоги действительно изменяют свои метаданные времени создания, когда изменяется их содержимое (возможно, кто-нибудь сможет пролить свет на то, почему это так?)
ls -lact --full-time /etc |tail
Системы, в которых отсутствует GNU Coreutils должен удалить опцию - полный рабочий день
(порядок сортировки по-прежнему будет правильным, и вы все равно получите день). Вы можете получить время создания из метаданных файла с помощью stat FILE | grep Change
(запустите это для самого старого файла, указанного в ls -lact
).
В других системах, отличных от Linux, stat
, вероятно, имеет эту информацию в несколько ином порядке, возможно, требуя других флагов. Обратите внимание, что при этом по-прежнему используются метаданные файла, и точность не гарантируется.
Также обратите внимание, что stat
из GNU Coreutils имеет время «рождения», которое имеет тенденцию быть неправильным (Linux с ext4 дает 0
, чтобы указать, что оно неизвестно, FreeBSD с UFS показала время «рождения», которое старше, чем у запрашиваемой мной системы). Правильное значение было указано как время «изменения».
Если вы хотите пофантазировать и получить , просто время создания самого старого файла в / etc
:
ls -lact --full-time /etc |awk 'END {print $6,$7,$8}'
Эта команда работала для меня в старой системе FreeBSD (UFS , без утилит GNU):
stat "/etc/$(ls -act /etc |tail -1)" |awk -F\" '{print $6}'
(Да, это анализирует ls
, и это табу, но в / etc
] не должно быть файлов с озорными именами.)
Вы можете также используйте stat
, чтобы получить другие форматы времени. Например, чтобы получить время создания в эпохи Unix : stat -c% Z FILE
(с GNU обратите внимание, что % Z
- это «время последнего состояния change », но это правильный флаг для моих систем Linux и BSD, как указано выше; % W
-« время рождения файла ») или stat -f% c FILE
(с BSD).