Con un find
comando, puedo mostrar nombres de directorios con múltiples niveles. El siguiente comando muestra todos los directorios debajo de la /var
ruta 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 stat
comando, puedo encontrar la fecha de modificación:
stat /var/log/samba | grep 'Modify:'
El resultado es:
Modify: 2014-01-02 11:21:27.762346214 -0800
¿Hay alguna forma de combinar los dos comandos para que los directorios se enumeren con la fecha y la hora modificadas?
-printf
siguiente opción evita llamarstat
por cada archivo encontrado. En mi prueba, el comando produce una salida casi idéntica, solo una precisión de un dígito adicional en los segundos.stat
es-f
.find /var -maxdepth 2 -type d -exec stat -f "%t%Sm %N" {} \;
La respuesta aceptada funciona pero es lenta. No es necesario ejecutar la estadística para cada directorio, find proporciona la fecha de modificación y puede imprimirla directamente. Aquí hay un comando equivalente que es considerablemente más rápido:
fuente
find
from msys que se ejecuta en Windows, que carece de unstat
comando.%Tc
impresiones "fecha y hora de las localidades", permitiendo que la cadena de formato "% p% Tc"find /var -maxdepth 2 -type d | xargs ls -oAHd
Esta es una forma de obtener su
ls
comando muestre la ruta completa del directorio. Si bienls
tiene el-R
parámetro de búsqueda recursiva, caminos no se mostrará en los resultados con el-l
o la-o
opción (en OSX, por lo menos), por ex con:ls -lR
.fuente
find /var -maxdepth 2 -type d -ls
que es simplemente más simple.Las versiones recientes de GNU
find
también incluyen una-printf
opción 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 usar-printf "%c %p\n"
.Si desea la fecha en un formato específico, puede usar el
%C
carácter de campo seguido de un campo. Por ejemplo, el año de 4 dígitos sería%CY
,Y
siendo el carácter del 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 así%CY-%Cm-%Cd
.Consulte las páginas de manual o la documentación en línea para obtener detalles adicionales.
Aquí hay un ejemplo práctico:
fuente
Otro que utilizo para imprimir archivos modificados en el último día. ls -ltr me da más detalles como el tiempo de modificación, el usuario, etc.
fuente
-name '*.ext'
especificación.ls -lt
Ordena la hora de modificación.)-print0
lugar de-print
y luego usar enxargs -0
lugar dexargs
.prueba esta línea:
aquí lo ejecuté, sale:
fuente