
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.