Estoy buscando una manera en Windows para enumerar todos los archivos en un directorio dado y sus subdirectorios, ordenados de manera que los archivos más nuevos estén en la parte superior. ¿Hay alguna manera fácil de hacer esto? También me conformaría con un guión de Perl.
windows
command-line
script
Dormir
fuente
fuente
my $dir = ($#ARGV >= 0 ? $ARGV[0] : '.');
para que escanee el directorio actual si no se proporciona el parámetro del directorio e incluya el tiempo que se imprime:print strftime('%Y-%m-%d %H:%M:%S', localtime((stat($key))[9])) . " $key\n";
$files{$key}
si desea usarlo parastrftime
imprimir para evitar una segunda llamadastat()
. Si planea canalizarlo a otro programa, también lo modifiqué para mostrar la ruta completa de los nombres de archivo. Puede obtenerlo aquí: pastebin.ca/1797748Me gusta esto:
dir /s /o:-d
fuente
Si tiene instalado cygwin o similar, entonces
find . -type f | xargs ls -tr
hará el truco. Es casi seguro que puedes hacer algo similar con el PowerShell de Microsoft.fuente
En caso de que esté usando Everything , simplemente escriba la ruta y ordene por Fecha de modificación y obtendrá todos los archivos en esta carpeta en ese orden, independientemente del subdirectorio.
Todo es freeware, hay disponible una versión portátil.
fuente
Si no le importa codificar (aunque esto lleva la pregunta al territorio de desbordamiento de pila), existen las clases
Directory
yFile
en C #.El
GetFiles
método tiene una sobrecarga que devolverá todos los nombres de archivo en todos los subdirectorios. Luego puede recorrer esta lista, llamandoGetLastWriteTime
para obtener la fecha / hora modificada. Almacene el nombre y la hora en un diccionario, ordene la hora e imprima los nombres de archivo.También hay clases
DirectoryInfo
yFileInfo
.Debería haber agregado que toda esta funcionalidad está disponible a través de Powershell , por lo que no tiene acceso a un IDE completo.
fuente
Si tiene instalado algo como Git Bash o Cygwin, debería poder usar una de las respuestas desde aquí: /programming/4561895/how-to-recursively-find-the-latest-modified -archivo-en-un-directorio
Uno que funcionó bien para mí es:
find . -type f -printf '%TF %TT %p\n' | sort -r
También puede agregar
| head -10
al final de eso para ver solo los 10 más recientes, por ejemplo.fuente