Você pode fazer isso combinando algumas ferramentas comuns:
-
findpara listar todos os arquivos .csv (não-ordenados) e executar um comando para cada -
basenamepara extrair o nome do arquivo sem a extensão.csvdo caminho -
datepara interpretar a especificação de data no nome do arquivo e convertê-la em um número facilmente classificável, como segundos desde 1970. -
echopara imprimir o número calculado e o caminho real do arquivo em uma linha para cada arquivo -
sortpara ordenar os caminhos de arquivo de acordo com este número de data convertida -
cutpara extrair apenas os caminhos de arquivo novamente da lista combinada -
xargs catpara construir um comando passando todos os nomes de arquivos para o comandocatpara concatená-los.
A linha completa é assim, se todos os arquivos que desejamos processar estiverem localizados em uma pasta chamada datecsv :
$ find datecsv/ -name '*.csv' -exec bash -c 'echo "$(date -d "$(basename -s.csv "{}")" +%s) {}"' \; | sort -n | cut -d' ' -f2- | xargs cat
2018,1,1,aaa
2018,1,1,bbb
2018,1,2,ccc
2018,1,2,ddd
2018,4,30,eee
2018,4,30,fff
Meus arquivos de exemplo que produzem a saída acima são estes:
$ cat datecsv/April-30-2018.csv
2018,4,30,eee
2018,4,30,fff
$ cat datecsv/January-01-2018.csv
2018,1,1,aaa
2018,1,1,bbb
$ cat datecsv/January-02-2018.csv
2018,1,2,ccc
2018,1,2,ddd
Como você quer apenas o número da linha de cada arquivo, o comando para isso seria assim:
$ find datecsv/ -name '*.csv' -exec bash -c 'echo "$(date -d "$(basename -s.csv "{}")" +%s) {}"' \; | sort -n | cut -d' ' -f2- | xargs -n1 wc -l
2 datecsv/January-01-2018.csv
2 datecsv/January-02-2018.csv
2 datecsv/April-30-2018.csv
A única alteração é a última parte, em que usamos xargs -n1 wc -l em vez de xargs cat como acima.
Algumas notas: A abordagem acima baseia-se em seus nomes de arquivos sendo um formato que date pode analisar. Esse é o caso dos nomes de exemplo que você forneceu, mas pode ser quebrado se o formato for alterado. Também requer que o nome do arquivo termine com um .csv minúsculo. Não tenho certeza se alguns caracteres especiais em nomes de arquivos podem quebrar coisas (espaços provavelmente devem ser seguros, novas linhas certamente irão quebrar).