Crie uma lista de arquivos em ordem crescente com base no nome do arquivo

Crie uma lista de arquivos em ordem crescente com base no nome do arquivo

Preciso criar uma lista de arquivos que exiba o nome do arquivo em ordem crescente. Meu nome de arquivo tem padrão de arquivo: FILE.YYYYMMDD.XXX

Por exemplo:

$ 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 entrada porque FILE.20200120.002 antes de FILE.20200220.001. FILE.20200120.002 foi processado e chegou ao diretório atual antes de FILE.20200220.001. É por isso que preciso classificá-lo com base no padrão de nome de arquivo YYYYMMDD.XXX.

Saída desejada:

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

O arquivo de hora em que foi criado não está em ordem, então não posso usar ls -ltr. Alguma ideia de como posso classificá-los? Estou usando Linux.

Obrigado

Responder1

Se o problema for obter os nomes dos arquivos em uma única coluna, em vez de no formato de várias colunas produzido ls, você poderá usar a -1 opção ("menos um") para ls:

ls -1

Os nomes dos arquivos seriam classificados por nome.


printf '%s\n' FILE.*

Supondo que o padrão FILE.*corresponda a todos os nomes de arquivos relevantes, e nada mais, o comando acima também imprimiria os nomes dos arquivos em ordem lexicográfica, cada um em uma linha por si só, o que parece ser o que você deseja.

informação relacionada