2010-09-28 20 views
5

Necesito crear una lista de archivos que se encuentran en mi disco duro en orden de cuando llegaron al disco duro. Para ello, he utilizado el siguiente:Ordenar archivos por tiempo de creación al milisegundo en Bash

ls -lat 

que enumera todos los archivos por orden de fecha/hora, sin embargo, sólo se les ordena que el segundo más cercano. El problema aquí es que hay miles de archivos y de vez en cuando, algunos de ellos se agrupan en el mismo segundo. Necesito el exacto orden correcto. Supongo que la forma más fácil de hacer esto es obtener el tiempo de creación en el mili (o tal vez nano) segundo. Para ello, he intentado usar el siguiente:

stat $myfile 

a mirar a la hora de modificación, pero siempre demuestra horas: minutos: second.00000000000.

¿Hay alguna manera de hacerlo? Gracias , Rik

Respuesta

3

stat(2) La precisión depende del sistema de archivos que está utilizando, pero incluso con un sistema de archivos de alta precisión, tales como ext4, la implementación estándar de stat usa time_t que tiene una resolución de 1 segundo.

Si tiene acceso a la fuente del programa escupiendo todos esos archivos, intente establecer una marca de tiempo como parte del nombre de archivo en su lugar y luego ordenar el nombre del archivo en lugar del tiempo de modificación.

2

que probablemente tendrá que escribir su propio comando stat, utilizando la función

2

No estoy seguro de que esto sea posible. Mi razonamiento:

Si observa la llamada a la función stat(), verá que devuelve una estructura que contiene información sobre un archivo. Uno de sus miembros es la siguiente:

time_t st_mtime; /* time of last modification */ 

Y si nos fijamos en la estructura time_t, así, wikipedia says this:

Unix y sistemas compatibles con POSIX implemento time_t como un entero o flotante reales tipo (típicamente un número entero de 32 o 64 bits) que representa el número de segundos desde el comienzo de la época Unix ...

Lo que significa que el tiempo de stat() es en términos de segundos, no de milisegundos. No he visto cómo cada inodo almacena información de archivos, pero puede que no almacene información hasta en milisegundos.

¿Una alternativa podría ser agregar el valor de mill/second al nombre del archivo cuando se están creando y ordenarlos de esa manera?

Cuestiones relacionadas