Quiero ordenar solo los archivos por fechas de actualización, incluidos los subdirectorios.
Descubrí ls -lrtR | grep ^-
. pero no parece ordenar por fechas de actualización.
Y necesito guardar esta lista en un archivo. ¿Es posible?
Apr 01 2010 InsideDoosanServiceImpl.class // in A directory
Apr 08 2010 MainController.class // in B directory
Apr 07 2010 RecommendController.class // in B directory
Apr 01 2010 MainDao.class // in B directory
Quiero decir que toda la lista no está ordenada por fecha, sino que primero se ordena por carpeta y se ordena por fecha.
Quiero una lista ordenada por fecha, incluidos todos los subdirectorios.
ls -lrt
.xargs
realización de múltiples llamadasls
, ya que los archivos solo se ordenan correctamente dentro de cadals
invocación pero carecen de un orden global coherente en la salida.Con ls, -R repetirá directorios y -t ordenará por modificación. Sin embargo, atraviesa directorios de forma recursiva y aplica -t a cada directorio. No acumula todos los archivos de todos los directorios y luego los ordena. (Por lo que yo entiendo, esto último es lo que quieres)
Con gnu find (1) puede especificar el formato de salida para incluir el número de segundos desde epoch y el nombre de archivo, luego puede canalizar esto para ordenar (1).
fuente
GNU find
ayuda. Pero OP funciona enAIX
máquinas, porGNU find
lo que no estaba disponible para él.ls
que no se pueda hacer que acumule archivos antes de ordenarlos.ls
es tan rápido en comparación confind
.ls
yfind
lee los mismos datos, así que no puedo imaginar ninguna razón por la que debería ser considerablemente más rápido que encontrar. En mi sistema, encontrar es 5 veces más rápido (buscar en aproximadamente medio millón de archivos)find . -type f -printf "%T@ %Tc %p\n" | sort -n > out.txt
produciendo entradas de salida como1427913836.2330520210 wed 1 apr 2015 20:43:56 ./subdir/file.txt
.