
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 ls
produce, 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.