Se você pode usar o GNU find (Linux ou Cygwin não integrado), faça find
imprimir os tamanhos dos arquivos e pós-processe a saída com awk
para classificar cada tamanho em uma categoria, sort
e uniq
para agrupar por categorias e awk
ou sed
para imprimir um resultado bonito. Algo como:
find /usr/opt -type f -printf '%s\n' |
awk '{
if ($1 ~ /^[2-9]......../) { print "3 G" }
else if ($1 >= 1073741824) { print "3 G" }
else if ($1 >= 1048576) { print "2 M" }
else if ($1 >= 1024) { print "1 k" }
else if ($1 >= 1) { print "0" }
}' |
sort | uniq -c |
awk '{print $1 " files are in the " $3 "B range"}'