Quiero saber la fecha de creación de un archivo en particular, no la fecha de modificación ni la fecha de acceso.
Lo he intentado con ls -ltrh
y stat filename
.
Respuesta aceptada:
stat -c '%w' file
en sistemas de archivos que almacenan el tiempo de creación.
Tenga en cuenta que en Linux esto requiere coreutils
8.31, glibc
2.28 y kernel versión 4.11 o posterior.
El estándar POSIX solo define tres marcas de tiempo distintas que se almacenarán para cada archivo:la hora del último acceso a los datos, la hora de la última modificación de datos y la hora en que el estado del archivo cambió por última vez.
Los sistemas de archivos modernos de Linux, como ext4, Btrfs, XFS (v5 y posteriores) y JFS, almacenan la hora de creación del archivo (también conocida como hora de nacimiento), pero usan nombres diferentes para el campo en cuestión (crtime
en ext4/XFS, otime
en Btrfs y JFS). Linux proporciona la interfaz de llamada al sistema statx(2) para recuperar la hora de nacimiento del archivo para los sistemas de archivos que lo admiten desde la versión 4.11 del kernel. (Entonces, incluso cuando se ha agregado soporte de tiempo de creación a un sistema de archivos, algunos núcleos implementados no lo han admitido de inmediato, incluso después de agregar soporte nominal para esa versión del sistema de archivos, por ejemplo, XFS v5).
Como señalaron Craig Sanders y Mohsen Pahlevanzadeh, stat
admite el %w
y %W
especificadores de formato para mostrar la hora de nacimiento del archivo (en formato legible por humanos y en segundos desde Epoch respectivamente) antes de coreutils
versión 8.31. Sin embargo, coreutils
stat
usa el statx()
llamada al sistema donde esté disponible para recuperar la hora de nacimiento solo desde la versión 8.31.
Antes de coreutils
versión 8.31 stat
accedió a la hora de nacimiento a través de get_stat_birthtime()
proporcionado por gnulib (en lib/stat-time.h
), que obtiene la hora de nacimiento de st_birthtime
y st_birthtimensec
campos del stat
estructura devuelta por stat()
llamada del sistema. Mientras que, por ejemplo, los sistemas BSD (y en la extensión OS X) proporcionan st_birthtime
a través de stat
, Linux no. Esta es la razón por la que stat -c '%w' file
salidas -
(que indica un tiempo de creación desconocido) en Linux antes de coreutils
8.31 incluso para sistemas de archivos que almacenan la hora de creación internamente.
Como señala Stephane Chazelas, algunos sistemas de archivos, como ntfs-3g, exponen los tiempos de creación de archivos a través de atributos de archivo extendidos.