¿Cómo puedo obtener la lista de todos los archivos en el directorio actual junto con su fecha de modificación y ordenados por esa fecha?
Ahora sé cómo lograr eso con find, staty sort, pero por alguna extraña razón, statno está instalado en la caja y es poco probable que pueda instalarlo.
¿Alguna otra opción?
PD: gcctampoco está instalado

find-printfembargo, la acción parece ser la más fácil.Respuestas:
Mi método más corto usa zsh:
(agregue los
Dcalificadores glob si también desea enumerar los archivos ocultos o los archivos en directorios ocultos).Si tiene GNU find, haga que imprima los tiempos de modificación del archivo y ordene por eso. Supongo que no hay nuevas líneas en los nombres de archivo.
Si tiene Perl (nuevamente, suponiendo que no haya nuevas líneas en los nombres de archivo):
Si tiene Python (nuevamente, suponiendo que no haya nuevas líneas en los nombres de archivo):
Si tiene acceso SSH a ese servidor, monte el directorio sobre sshfs en una máquina mejor equipada:
Con solo las herramientas POSIX, es mucho más complicado, porque no hay una buena manera de encontrar el tiempo de modificación de un archivo. La única forma estándar de recuperar los tiempos de un archivo es
ls, y el formato de salida depende del entorno local y es difícil de analizar.Si puede escribir en los archivos, y solo le importan los archivos normales, y no hay nuevas líneas en los nombres de los archivos, aquí hay un error horrible: cree enlaces duros a todos los archivos en un solo directorio y ordénelos por hora de modificación.
fuente
find . -print | xargs -n99999 -s999999 ls -ltr. Pero eso tiene el problema de que (1)xargspuede no permitir-mmás de 512 o-smás de 5120, y (b) incluso si puede evitar eso, todavía hay un tamaño máximo impuesto por el núcleo de la lista de argumentos combinados y el entorno. La mayoría de sus ideas (excepto las de Perl y Python) tienen el mismo problema, por lo que evité específicamente construir líneas de comando largas.zshglobos recursivos en el caso general.print -rl **/*, el único límite es la cantidad de memoria libre que tiene), y más allá de eso hayzargs. Su propuesta defind … | xargs … lsse ordenará correctamente sixargstermina invocandolssolo una vez, y no funcionará si hay caracteres especiales en los nombres de archivo.Asumiendo GNU
find:Cambie
1n,1a1nr,1si desea que los archivos enumerados sean los más recientes primero.Si no tiene GNU,
findse vuelve más difícil porquelsel formato de marca de tiempo varía mucho (los archivos modificados recientemente tienen un estilo diferente de marca de tiempo, por ejemplo).fuente
ls --time-style="...": no estoy seguro de si esto es estándar o GNU ls, probablemente GNU.lsno tiene esa opción.En una Mac no hay ningún argumento -printf para encontrar, pero puede hacerlo en su lugar:
find . -print0 | xargs -0 -n 100 stat -f"%m %Sm %N" | sort -n|awk '{$1="";print}'fuente
uno puede probar esto (sin embargo, hay que construirlo uno mismo) https://github.com/shadkam/recentmost
fuente
Ignorar archivos ocultos - con sello de tiempo agradable y rápido
Maneja bien los espacios en los nombres de archivo, ¡no es que debas usarlos!
Se
findpuede encontrar más en abundancia siguiendo el enlace.fuente
Hablando en general de encontrar archivos por fecha (esto no funcionará para el póster original, pero terminé aquí, así que pensé que otros también podrían hacerlo). En mi caso de uso, quiero enumerar los archivos con el fin de revisarlos antes de eliminarlos.
Con findutils 4.6.0 me gusta:
El comando anterior busca archivos (
-type f), en el directorio de trabajo actual (.) que se modificaron hace más de 270 días (-mtime +270también-mtime 0producirá las últimas 24 horas y-mtime -5muestra los últimos 5 días). Luego se usalspara enumerarlos por fecha, el más nuevo primero (-exec ls -laFGht --time-style=iso {} \+)Aquí hay una muestra de la salida:
Lo mejor de esto es que una vez que la lista ha sido revisada, es simple reemplazar la parte de la lista con el
findcomando eliminar:fuente