sintaxis - que significa en linux
Listar todos los archivos(con rutas completas) en un directorio(y subdirectorios), ordenados por tiempo de acceso (5)
Me gustaría construir un comando de Linux para enumerar todos los archivos (con sus rutas completas) dentro de un directorio específico (y subdirectorios) ordenados por tiempo de acceso.
ls puede ordenar por tiempo de acceso, pero no da la ruta completa. Encontrar proporciona la ruta completa, pero el único control que tiene sobre el tiempo de acceso es especificar un rango con -atime N (al que se accedió hace al menos 24 * N horas), que no es lo que quiero.
¿Hay una manera de ordenar por tiempo de acceso y obtener la ruta completa a la vez? Podría escribir un script, pero parece que debería haber una manera de hacer esto con los programas estándar de Linux.
tu podrías intentar:
ls -l $(find /foo/bar -type f )
- puede agregar otras opciones (por ejemplo, -t para ordenar) al comando
ls
para lograr su objetivo. - También puedes agregar tus criterios de búsqueda para
find
cmd.
find . -type f | xargs ls -ldt
find . -type f | xargs ls -ldt
debería hacer el truco siempre que no haya tantos archivos que find . -type f | xargs ls -ldt
el comando como argumento límite y generen 2 instancias de ls.
find . -type f -exec ls -l --full-time {} /; 2> /dev/null | sort -t'' '' -k +6,6 -k +7,7
La respuesta de Alex no me funcionó, ya que tenía archivos de más de un año y la clasificación se complicó. Lo anterior agrega el parámetro --full-time, que neutraliza los valores de fecha / hora y hace que se puedan ordenar independientemente de su antigüedad.
find . -type f -exec ls -l {} /; 2> /dev/null | sort -t'' '' -k +6,6 -k +7,7
Esto buscará todos los archivos y los ordenará por fecha y luego por hora. Luego puede usar awk
o cut
para extraer las fechas y el nombre de los archivos de la salida de ls -l
pwd | xargs -I % find % -type f