¿Cómo enumero todos los archivos en un directorio y subdirectorios en orden cronológico inverso?

StackOverflow https://stackoverflow.com/questions/4909751

  •  29-10-2019
  •  | 
  •  

Pregunta

Quiero hacer algo como ls -t pero también tiene los archivos en subdirectorios incluidos. Pero el problema es que no quiero que la salida se forme como ls -R lo hace, que es así:

[test]$ ls -Rt
b       testdir test

./testdir:
a

Quiero que esté formateado como el find El comando muestra archivos en subdirectorios. Es decir:

[test]$ find .
.
./b
./test
./testdir
./testdir/a

Pero que find No parece hacer que ordene el resultado cronológicamente por la última hora de actualización.

Entonces, ¿cómo puedo enumerar todos los archivos en un directorio y subdirectorios, en el formato que find ¿Lo hace, pero en orden cronológico inverso?

¿Fue útil?

Solución

Prueba este:

find . -type f -printf "%T@ %p\n" | sort -nr | cut -d\  -f2-

Otros consejos

ls -lR es mostrar todos los archivos, directorios y subtirectorios en el directorio de iniciols -lR | more se usa para mostrar todos los archivos en un flujo.

Si el número de archivos que desea ver se ajusta dentro del límite de argumento máximo, puede usar Globbing para obtener lo que desea, con recursión si tiene soporte de GlobStar.

Para exactamente 2 capas de uso profundo: ls -d * */*

Con Globstar, para uso de la recursión: ls -d **/*

los -d argumentar ls le dice que no recurre directorios aprobados como argumentos (ya que está utilizando el shell globbing para hacer la recursión). Esto previene ls Usando su formato de recursión.

find -type f -print0 | xargs -0 ls -t

Abrazamiento: funciona solo para una cierta cantidad de archivos. Si tiene grandes cantidades de archivos, necesita algo más complicado

Probarfind . -type dofind . -type d -ls

prueba esto:

ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total' |sed '/^$/d'

El comando en Respuesta de WFG5475 está funcionando correctamente, solo necesita agregar una cosa para mostrar solo archivos en un directorio y subdirector:

ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total|^d' |sed '/^$/d'

Se agregó una cosa: ^d Para ignorar todos los directorios de las salidas de listado

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top