Скрипт cтатистики по файлам в папке
Простой bash-скрипт для анализа файлов в директории с выводом полезной статистики. Изначально создавался для анализа архивов на FTP-сервере, но может использоваться для любых файлов.
Что делает скрипт
- Сканирует текущую папку и находит все ZIP-архивы
- Вычисляет средний и медианный размер файлов
- Подсчитывает количество файлов больше и меньше 10MB
- Выводит результаты в удобном формате
Использование
Просто запустите скрипт в папке с файлами:
./file_stats.sh
Результат будет примерно таким:
Средний размер: 2458 KB Медианный размер: 1024 KB Файлов больше 10MB: 3 Файлов меньше 10MB: 47
Код скрипта
#!/bin/bash
# Сохраняем размеры всех файлов в байтах во временный файл
find . -name "*.zip" -type f -printf "%s\n" > /tmp/sizes.txt
# Вычисляем средний размер в KB
avg=$(awk '{ sum += $1 } END { print sum/NR/1024 }' /tmp/sizes.txt)
# Вычисляем медианный размер в KB
median=$(sort -n /tmp/sizes.txt | awk '
BEGIN { CONVFMT = "%.2f" }
{ a[NR] = $1 }
END {
if (NR%2==1) print a[(NR+1)/2]/1024;
else print (a[NR/2]+a[NR/2+1])/2/1024
}
')
# Считаем файлы больше и меньше 10MB
counts=$(awk '
BEGIN { big=0; small=0 }
{ if ($1 > 10*1024*1024) big++; else small++ }
END { print big " " small }
' /tmp/sizes.txt)
# Извлекаем значения счетчиков
read big_count small_count <<< "$counts"
# Выводим результаты
echo "Средний размер: ${avg%.*} KB"
echo "Медианный размер: ${median%.*} KB"
echo "Файлов больше 10MB: $big_count"
echo "Файлов меньше 10MB: $small_count"
# Очищаем временные файлы
rm /tmp/sizes.txt
Настройка
Можно легко адаптировать скрипт под свои нужды:
- Изменить маску файлов (
*.zipна*.pdf,*.*и т.д.) - Поменять пороговый размер (сейчас 10MB)
- Добавить дополнительную статистику
Удобно использовать для мониторинга дискового пространства и анализа содержимого папок.