Posso encontrar o número de todos os arquivos na pasta, mas tenho um número bastante grande.
find . -type f | wc -l #find number of files in DIR
ls -lrt #list all files order by date
Como encontrar o número de arquivos por dia?
Portanto, o resultado deve ser algo como:
# left number is number of files and right is one day.
109294 2016-06-27
101555 2016-06-26
88123 2016-06-25
... etc.
command-line
find
tasmaniski
fonte
fonte
109294
e109294
Respostas:
Você pode fazer isso usando a
printf
ação defind
para imprimir apenas os tempos de modificação no formato desejado e, em seguida, usandosort
euniq
:-printf '%TY-%Tm-%Td\n'
imprime a hora da modificação dos arquivos, por exemplo, no2015-05-23
formatosort
classifica a saída euniq -c
faz a contagem por dataExemplo:
fonte
find . -type f -printf '%TY-%Tm-%Td\n' 2</dev/null | sort | uniq -c | tail -n +2 | gnuplot -p -e "set xdata time; set timefmt \"%Y-%m-%d\";set xtics rotate; plot '-' using 2:1 with impulses"
Aqui está uma solução com
find
+awk
Essencialmente, o que acontece é que encontramos todos os arquivos regulares e imprimimos seu tempo de modificação conforme especificado pelo
%T
formato, assumimos oawk
controle e contamos cada linha usando matrizes associadas. aEND{}
instrução usafor
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 comsort -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
fonte
|sort | uniq -c
versão, especialmente com um grande número de arquivos e um conjunto pequeno de dias diferentes. Reduzir para contagens em uma etapa evita a classificação de um grande número de duplicatas antes da contagem.