¿Cómo puedo obtener la edad de un archivo determinado en, al menos, días?
Soy muy consciente de ls -lh
comandos similares. Quiero algo que funcione más o menos así:
getfage <FILE> # prints out '12d' (12 days)
Además, esto debe ser algo multiplataforma, ya que también me gustaría usar esto en Mac OS X, pero el caso de uso principal está en mi Linux-box.
NOTA
Como Linux no rastrea el tiempo de creación, estoy buscando una solución doble: una para mtime (linux), que es la última vez que se modificó dicho archivo, y otra para Mac OS X, que puede manejar mtime o tiempo de creación.
command-line
files
timestamps
Alexej Magura
fuente
fuente
stat
te da todo lo que necesitas ¿verdad?Respuestas:
Unix no realiza un seguimiento de una fecha de creación. La única información disponible suele ser la última vez que los archivos fueron:
( De esta respuesta )
Puede obtener fechas relacionadas con un archivo en particular usando el
stat
comando.Ejemplo
OSX y HFS
Si está utilizando OSX, el sistema de archivos que se utiliza en ese Unix es HFS . Este es uno de los pocos (que yo sepa) que mantiene la fecha de creación dentro del sistema de archivos, junto con la hora de modificación, etc. similar a otros Unixes.
extracto
Marcas de tiempo
Las marcas de tiempo siempre se mantienen en el sistema de archivos, por lo que está limitado por el seguimiento de tiempo que se ofrece a través de ellos (EXT3, EXT4, XFS, etc.).
Sistemas de archivos
Si alguna vez tiene curiosidad, eche un vistazo a este tema de Wikipedia titulado: Comparación de sistemas de archivos . Tiene la lista más extensa de sistemas de archivos que conozco, junto con una buena tabla de las diversas características y el estado de si es compatible o no dentro de un sistema de archivos determinado.
Referencias
fuente
OSX realiza un seguimiento de la creación de archivos, pero la mayoría de los otros dispositivos no lo hacen, por lo que no hay forma de saber el tiempo transcurrido desde la creación del archivo. Puede obtener el tiempo transcurrido desde su última modificación en casi cualquier sistema operativo.
No hay una utilidad de shell portátil para recuperar el tiempo de modificación de un archivo, excepto
ls
que tiene una salida que es casi imposible de analizar. En Linux, el siguiente comando imprime la antigüedad de un archivo:En Linux, puede usar
stat -c %Y -- "$filename"
como sinónimo dedate +%s -r "$filename"
.Los OSX
date
y losstat
comandos son diferentes. Puede usar el siguiente comando:Los sistemas Linux no integrados y OSX tienen Perl instalado por defecto.
fuente
stat
, en Linux la syscall no ha sido modificada, por lo que debe recurrir a la pirateríadebugfs
.Según la respuesta de Gilles, aquí hay una función bash que devuelve la antigüedad del archivo en segundos o error.
fuente
Puede usar
stat -f%B
,ls -lU
omdls -n kMDItemFSCreationDate
para ver el tiempo de creación (nacimiento) en OS X:fuente
mira
man stat
para-c
opciones (formato)fuente