Aqui está uma solução com find
+awk
find . -maxdepth 1 -type f -printf '%TY-%Tm-%Td\n' | awk '{array[$0]+=1}END{ for(val in array) print val" "array[val] }'
Essencialmente, o que acontece é que encontramos todos os arquivos regulares e imprimimos seu tempo de modificação conforme especificado pelo %T
formato, assumimos o awk
controle e contamos cada linha usando matrizes associadas. a END{}
instrução usa for
loop para percorrer todos os elementos da matriz associada e imprimir o conteúdo da chave + matriz [chave] (que é a data + contagem).
Você pode usar sort
para organizar a saída, principalmente com sort -k 1
base na coluna 1 (que é data), mas isso é opcional. Também -maxdepth 1
procurará arquivos apenas na pasta atual . Se você também deseja encontrar arquivos em subdiretórios, remova a -maxdepth 1
peça.
Saída de amostra
$ find . -maxdepth 1 -type f -printf '%TY-%Tm-%Td\n' | awk '{array[$0]+=1}END{ for(val in array) print val" "array[val] }'
2015-09-29 1
2016-04-06 2
2016-04-07 10
2016-04-08 2
2015-11-05 2
2016-04-22 2
2016-04-23 6
2016-04-24 1
2015-11-21 2
2015-11-22 2
109294
e109294