Cree una lista de archivos en orden ascendente según el nombre del archivo

Cree una lista de archivos en orden ascendente según el nombre del archivo

Necesito crear una lista de archivos que muestre el nombre del archivo en orden ascendente. El nombre de mi archivo tiene un patrón de archivo: ARCHIVO.AAAAMMDD.XXX

Por ejemplo:

$ ls -ltr
-rwxr-xr-x. 1 honle 1036 Apr 14  2020 FILE.20200102.001
-rwxr-xr-x. 1 honle 426832 Apr 14  2020 FILE.20200102.002
-rwxr-xr-x. 1 honle 426832 Apr 14  2020 FILE.20200102.003
-rwxr-xr-x. 1 honle 426832 Apr 10  2020 FILE.20200110.001
-rw-r--r--. 1 honle 426832 Apr 14 22:50 FILE.20200220.001
-rwxr-xr-x. 1 honle 1036 Apr 15 16:30 FILE.20200110.001

Anotado para ingresar por qué FILE.20200120.002 antes de FILE.20200220.001. FILE.20200120.002 se procesó y llegó al directorio actual antes de FILE.20200220.001. Es por eso que necesito ordenarlo según el patrón de nombre de archivo AAAAMMDD.XXX.

Salida deseada:

FILE.20200102.001
FILE.20200102.002
FILE.20200102.003
FILE.20200110.001
FILE.20200120.002
FILE.20200220.001

El archivo de hora de creación no está en orden, por lo que no puedo usar ls -ltr. ¿Alguna idea de cómo puedo ordenarlos? Estoy usando Linux.

Gracias

Respuesta1

Si el problema es obtener los nombres de archivos en una sola columna en lugar del formato de varias columnas que lsproduce, entonces puede usar la -1 opción ("menos uno") para ls:

ls -1

Los nombres de los archivos se ordenarían por nombre.


printf '%s\n' FILE.*

Suponiendo que el patrón FILE.*coincida con todos los nombres de archivos relevantes, y nada más, el comando anterior también imprimirá los nombres de archivos en orden lexicográfico, cada uno en una línea separada, que parece ser lo que usted desea.

información relacionada