una - ver archivos por fechas linux
¿Cómo mostrar el tiempo de fecha modificado con el comando ''buscar''? (6)
Con un comando de find
, puedo mostrar nombres de directorios con múltiples niveles. El siguiente comando muestra todos los directorios en la ruta /var
con una profundidad de 2:
find /var -maxdepth 2 -type d;
El resultado muestra:
/var
/var/log
/var/log/sssd
/var/log/samba
/var/log/audit
/var/log/ConsoleKit
/var/log/gdm
/var/log/sa
Con un comando stat
, puedo encontrar el tiempo de fecha modificado:
stat /var/log/samba | grep ''Modify:''
El resultado es:
Modify: 2014-01-02 11:21:27.762346214 -0800
¿Hay alguna manera de combinar los dos comandos para que los directorios se enumeren con la fecha de modificación?
La respuesta aceptada funciona pero es lenta. No es necesario ejecutar stat para cada directorio, find proporciona la fecha de modificación y puede simplemente imprimirlo directamente. Aquí hay un comando equivalente que es considerablemente más rápido:
find /var -maxdepth 2 -type d -printf "%p %TY-%Tm-%Td %TH:%TM:%TS %Tz/n"
Las versiones recientes de find
de GNU también incluyen una opción -printf
que incluye campos de fecha. Si necesita imprimir el nombre del archivo y la hora de modificación en el formato estándar "C", puede utilizar -printf "%c %p/n"
.
Si desea la fecha en un formato específico, puede usar %C
seguido de un carácter de campo. Por ejemplo, el año de 4 dígitos sería %CY
, siendo Y
el personaje para el año de 4 dígitos.
Tenga en cuenta que si necesita varios campos, deberá especificar %C
varias veces. Por ejemplo, el formato AAAA-MM-DD se vería como %CY-%Cm-%Cd
.
Consulte las páginas man o la documentación en línea para obtener detalles adicionales.
Otra que utilizo para imprimir archivos modificados en el último día. ls -ltr me da más detalles como tiempo de modificación, usuario, etc.
find <my_dir> -mtime -1 -type f -print | xargs ls -ltr
Puede usar el -exec
para find
y definir el formato de salida de la stat
usando el -c
siguiente manera:
find /var -maxdepth 2 -type d -exec stat -c "%n %y" {} /;
Esto debería dar el nombre de archivo seguido de su tiempo de modificación en la misma línea de la salida.
prueba esta línea:
find /var -maxdepth 2 -type d|xargs stat|grep -E ''File|Modi''
aquí lo ejecuté, produce:
....
File: ‘/var/cache/cups’
Modify: 2013-12-24 00:42:59.808906421 +0100
File: ‘/var/log’
Modify: 2014-01-01 12:41:50.622172106 +0100
File: ‘/var/log/old’
Modify: 2013-05-31 20:40:23.000000000 +0200
File: ‘/var/log/journal’
Modify: 2013-12-15 18:56:58.319351603 +0100
File: ‘/var/log/speech-dispatcher’
Modify: 2013-10-27 01:00:08.000000000 +0200
File: ‘/var/log/cups’
Modify: 2013-12-22 00:49:52.888346088 +0100
File: ‘/var/opt’
Modify: 2013-05-31 20:40:23.000000000 +0200
....
find /var -maxdepth 2 -type d | xargs ls -oAHd
Esta es una forma de hacer que su comando ls
básico muestre la ruta completa del directorio. Mientras ls
tiene el parámetro -R
para la búsqueda recursiva, las rutas no se mostrarán en los resultados con la opción -l
o -o
(en OSX, al menos), por ejemplo con: ls -lR
.