Скрипт 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)
- Добавить дополнительную статистику
Удобно использовать для мониторинга дискового пространства и анализа содержимого папок.