¿Cómo creo una lista del contenido de los archivos de un directorio y subdirectorios con las horas de creación, adición, modificación y última apertura de cada archivo?

¿Cómo creo una lista del contenido de los archivos de un directorio y subdirectorios con las horas de creación, adición, modificación y última apertura de cada archivo?

Tengo una Mac y necesito crear una lista de todo el contenido de los archivos en un directorio determinado y sus subdirectorios, junto con las fechas de "Creación", "Agregado", "Modificado" y "Última apertura" para cada archivo.

Al revisar los distintos hilos, puedo ver cómo obtener los datos de Creación/Agregado/Modificación usando los comandos 'ls' o 'stat', pero no veo ninguna forma de obtener la información de la fecha de última apertura para todos los archivos de forma recursiva.

Respuesta1

  • Creación: Aunque no es una de las propiedades de archivo originales incluidas en UNIX, esta está disponible en muchos sistemas de archivos hoy en día (incluido, más pertinentemente para MacOS, HFS+), y las versiones modernas de herramientas como lsy statsaben cómo acceder a ella: ls -U, statutiliza B(documentado en las páginas de manual).
  • Agregado: Esto no existe per se. Puede usar la hora de la última modificación del directorio que contiene un archivo para saber cuándo ocurrió la última modificación en ese directorio, que es cuando se agregó (creó o movió), eliminó (eliminó o movió) un archivo, o renombrado. Pero no sabes cuál y sólo obtienes información sobre el evento más reciente.
  • ModificadoyUltimo acceso: Estas son estadísticas originales que han estado disponibles en archivos en UNIX desde siempre. La mayoría de los sistemas de archivos y básicamente todas las herramientas los admiten: ls -u, statusos ay m(nuevamente, como está documentado). Tenga en cuenta que, para ahorrar escrituras en el disco en cada acceso a archivos, el seguimiento de la marca de tiempo del último acceso a veces se desactiva o se desactiva condicionalmente.

Hay otro que no has mencionado, que esúltimo cambio de inodo. Esto rastrea cuándo los metadatos de un archivo cambiaron por última vez, a diferencia del contenido del archivo.

Respuesta2

Puedes usar elstatcomando para enumerar información sobre un archivo. Este comando puede enumerar las cuatro marcas de tiempo que registra el sistema operativo para un archivo:

  • %a: el tiempo de acceso (atime). Esta es la última vez que se abrió o leyó el archivo (por ejemplo, para analizar o indexar su contenido).
  • %m: la hora de modificación (mtime). Esta es la última vez que se modificó el contenido del archivo. Si el archivo se copió o descargó desde otro lugar, si su mtime se actualiza en el momento de la copia depende de cómo se realiza la copia.
  • %c: el tiempo de cambio de inodo (ctime). Este tiempo se actualiza cada vez que le sucede algo al archivo además de leerlo: modificación, cambio de nombre, movimiento, cambio de permisos, etc.
  • %B: la hora de nacimiento (hora de creación). Normalmente, esta es la hora en que se creó o descargó el archivo, aunque con algunas aplicaciones esto puede reflejar la última vez que se guardó el archivo.

Puedes combinarlo con elfindcomando para enumerar archivos de forma recursiva. Por ejemplo, para enumerar las marcas de tiempo y los nombres de todos los archivos normales en el directorio actual, puede usar:

find . -type f -exec stat -f '%Sa %Sc %Sm %SB %N' {} \;

información relacionada