Em um sistema GNU:
#! /bin/sh -
find "$1" -type f -printf '%s$ that-script /usr/bin
min: 30
/usr/bin/rgrep
/usr/bin/xlinks2
max: 11634832
/usr/bin/doxygen
average: 170653.62570735652
%p\n#! /bin/sh -
find "$1" -type f -printf '%s$ that-script /usr/bin
min: 30
/usr/bin/rgrep
/usr/bin/xlinks2
max: 11634832
/usr/bin/doxygen
average: 170653.62570735652
%p\n%pre%' |
awk -vRS='%pre%' '
{getline file}
{n++; sum += $0; files[$0] = files[$0] file}
$0 < min || n == 1 {min = $0}
$0 > max || n == 1 {max = $0}
END {
if (n)
printf "min: %d\n%s\nmax: %d\n%s\naverage: %.17g\n", \
min, files[min], max, files[max], sum/n
}'
' |
awk -vRS='%pre%' '
{getline file}
{n++; sum += $0; files[$0] = files[$0] file}
$0 < min || n == 1 {min = $0}
$0 > max || n == 1 {max = $0}
END {
if (n)
printf "min: %d\n%s\nmax: %d\n%s\naverage: %.17g\n", \
min, files[min], max, files[max], sum/n
}'
Isso é para o tamanho do arquivo (aqui regular arquivos apenas com -type f
), ao contrário do uso do disco. Para uso de disco, use %k
ou %b
em vez de %s
no argumento para find
' -printf
.
Isso pressupõe que $1
não se parece com uma opção ou predicado find
(como -L
, !
, (
, -name
...).