Lista de archivos por última fecha de edición


Digamos que tengo un directorio como /home/user/.

¿Cómo puedo listar CADA archivo (incluso en subdirectorios) debajo de esa carpeta, y ordenarlos por la fecha en que se editaron por última vez?

 91
Author: ArtB, 2009-09-10

2 answers

Puedes usar:

$ ls -Rt

Donde -R significa recursivo (incluir subdirectorios) y -t significa "ordenar por fecha de última modificación".

 142
Author: mipadi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-10 12:23:31

Si desea una lista maestra en la que todos los archivos estén ordenados juntos por fecha de modificación, mostrando el directorio en el que se encuentran, pero no agrupados por directorio , puede usar esto:

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '

El resultado se parece mucho a ls -l:

-rw-r--r-- 1 root     root         3892 08/11/2009 11:03:36 /usr/share/man/man1/xmllint.1.gz
-rw-r--r-- 1 root     root        22946 08/13/2009 11:59:20 /usr/share/man/man1/curl.1.gz
-rw-r--r-- 1 root     root          728 08/17/2009 12:06:33 /usr/share/man/man1/thunderbird.1.gz
-rw-r--r-- 1 root     root          873 08/18/2009 10:52:47 /usr/share/man/man1/libgnutls-config.1.gz
-rw-r--r-- 1 root     root         2552 08/19/2009 02:00:34 /usr/share/man/man3/Purple.3pm.gz
-rw-r--r-- 1 root     root         9546 08/19/2009 02:02:00 /usr/share/man/man1/pidgin.1.gz
-rw-r--r-- 1 root     root         2201 08/19/2009 02:02:46 /usr/share/man/man3/Pidgin.3pm.gz
-rw-r--r-- 1 root     root          926 08/19/2009 02:03:05 /usr/share/man/man1/purple-remote.1.gz
-rw-r--r-- 1 root     root        18052 08/19/2009 04:11:47 /usr/share/man/man1/mono.1.gz
-rw-r--r-- 1 root     root         1845 08/19/2009 04:11:47 /usr/share/man/man5/mono-config.5.gz

Mac OS X

Para aquellos de ustedes que usan Mac OS X, la opción -printf no está disponible en BSD find (obtendrán este error: find: -printf: unknown primary or operator). Afortunadamente puedes instalar GNU find a través de Homebrew (allí debería ser una opción para Fink y Macports también):

brew install findutils

Después de instalarlo, GNU find debería estar disponible para usted como gfind. Por lo tanto, todo lo que necesita hacer es cambiar la línea de arriba a:

gfind . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
 67
Author: Dennis Williamson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-16 21:45:26