Как найти средний размер файла

With GNU find:

find . -type f -printf '%sn' | awk '{s+=$0}
  END {printf "Count: %unAverage size: %.2fn", NR, s/NR}'

Or for disk usage:

find . -type f -printf '%bn' | awk '{s+=$0}
  END {printf "Count: %unAverage size: %.2fn", NR, s*512/NR}'

Note that if there are several hardlinks of the same file in there, that will count its disk usage several time.

The above only counts regular files, not symlinks or directories or other special files. It includes hidden files.

The same with zsh builtins:

zmodload -i zsh/stat
count() {zstat -Hs -- $REPLY; ((size+=$s[size], count++, 0))}
size=0 count=0
**/*(oNDN.+count)
print -f "Count: %snAverage size: %.2fn" $count $(($size./count))

Я просто использовал Total Commander (условно-бесплатное программное обеспечение) и Microsoft Excel, чтобы сделать это за 2 минуты.

В Total Commander перейдите в корень C: (или любой другой диск, который вам нравится), нажмите Ctrl+B, в котором перечислены все файлы во всех подкаталогах в одном месте. В пункте меню «Отметить» нажмите «Копировать в буфер обмена со всеми деталями» и вставьте в Excel … Теперь у вас есть длинный список элементов с их размерами файлов, сортировка и подсчет в соответствии с вашими сердцами. Вы также можете Google «гистограмма в Excel» для лучшего вывода.

То, с чем я столкнулся в одногодичной системе Windows 8.1, показано ниже (размеры указаны в байтах, а цифры по оси x — мой определенный диапазон). Как видно, большинство моих файлов имеют диапазон около 1 Кб.

Цифры оси X - мой определенный диапазон

September 27 2017, 19:41

Category:

  • Компьютеры
  • Cancel

Каков средний размер файла? Ну, так, в среднем по больнице

Сколько места на диске занимает средний файл? Всех типов, на любых компьютерах.
Вот у себя я могу открыть Тотал Коммандер и посчитать общее количество и общий размер на компе, сложить и поделить, потом также на ноутбуке, потом сложить и поделить на 2. Но это только у меня лично. А как в среднем по больнице, в мире?
Допустим берём все компьютеры (PC, Mac, неважно), все операционные системы, все назначения (сервер, домашний, рабочий, неважно)

P.S. Осознаю, что рискую стать претендентом в номинации «Самый бессмысленный вопрос месяца» :-)

UPD: Какова будет методика подсчёта?

Нужно составить функцию для подсчета среднего размера файла в директории. При этом функция должна проверять директорию на существование, и после этого выводить средний размер файлов в директории. Так же из подсчетов нужно исключить поддиректории и символьные ссылки

Я попал в тупик, и дальше этой функции не могу уйти…
stat -c ‘%F %s’ /mydir/.* *


  • Вопрос задан

    более года назад

  • 2429 просмотров

Пригласить эксперта

find $1 -type f -ls|awk ‘{sum+=$7}END{print sum/NR}’

#!/bin/bash

# uncomment for debug
#set -x

function get_avg_size() {

  [ ! -d "$1" ] && echo "Directory $1 DOES NOT exists." && exit 1

  sum_size=0
  count=0

  for size in $(LC_ALL=C stat -c '%F %s' $1/* | grep 'regular file' | cut -d ' ' -f 3); do
    let sum_size=$sum_size+$size
    let count=$count+1
  done

  echo "Average file size $(($sum_size/$count))"
}

get_avg_size ~/

Вот тебе вариант. До вменяемого состояния допиши сам.


  • Показать ещё
    Загружается…

24 мая 2023, в 22:26

9000 руб./за проект

24 мая 2023, в 22:20

1200 руб./за проект

24 мая 2023, в 21:54

100 руб./за проект

Минуточку внимания

Родилось сразу несколько вариантов

1. для заданного каталога (без учета подкаталогов)

Bash
1
2
dir="."
du -b "$dir" | awk '{ s += $1 } END { print s / NR }'

2.1. для заданного каталога (с учетом подкаталогов)

Bash
1
2
dir="."
find "$dir" -type f -print0 | xargs -0 du -b | awk '{ s += $1 } END { print s / NR }'

2.2. тоже самое, но менее гибко чем предыдущий (исторически я его выдумал первым, но пока писал, выдумал два других)

Bash
1
2
3
4
dir="."
sum="$( du -b "$dir" | awk '{ print $1 }' )"
num="$( find "$dir" -type f | wc -l )"
echo "$sum / $num" | bc -l

Также не забываем про опции разбора символических ссылок.

команда find
find [-H] [-L] [-P] ...

команда du
-D, --dereference-args; -H; -L, --dereference; -P, --no-dereference; -x, --one-file-system

Понравилась статья? Поделить с друзьями:
  • Как найти местоположение контейнера
  • Фильм как найти нефть
  • Как найти произведение всех чисел последовательности
  • Как нас найти школа танцев
  • Как найти своих конкурентов вконтакте