He visto muchas preguntas y respuestas aquí usando una construcción en la línea de
list_dir=`ls -t /path/to/dir/`
for i in $list_dir; do
o
ls -t | while read i; do
Ahora, sé que no deberías usar ls en scripts porque se rompe fácilmente; pero no puedo encontrar una mejor manera de operar en archivos en orden desde la última modificación hasta la modificación más reciente (o viceversa).
Puedo usar algo como:
find . -type f -printf '%T@ %p\n' | sort -n | cut -d ' ' -f 2- | while read i; do...
... pero esto aún se romperá con cualquier archivo que tenga nuevas líneas en sus nombres, y es mucho más feo arrancar. ¿Hay una mejor manera?

--zero-terminatedgracias por eso, ¡desearía poder darte aún más puntos!info ls: si quisiera un script a prueba de balas con ls, ¿cuál--quoting-styledebería usar?--quoting-style=escapees la forma de elegir.ls--quoting-stylefalla (para analizar a propósito) porque solo cita nombres de archivos: cuando tienes un espacio en el nombre de un grupo. Ok, es un caso muy extraño, pero aparece en cygwin bash shell, aquí tienes nombres de grupo comoDomain Users.La forma más fácil con diferencia es usar zsh. El calificador global clasifica
omlas coincidencias en orden cronológico inverso; usoOmpara orden cronológico.El
Ncalificador global hace que el patrón se expanda a una lista vacía si el directorio está vacío. Haga esto*(DNom)para que coincida con los archivos de puntos.fuente