/
jenyapng
/
project-bash
Обзор
Документация
Войти
/
jenyapng
/
project-bash
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
task-2/script-21.sh
87 строк
3 KB
jenyapng
first_commit
11 авг 2026, 16:22
11 авг 2026, 16:22
9ea1476
Код
Авторство
О чём код?
#!/bin/bash show_help() { echo "Использование: $0 <директория> [опции]" echo "Примеры:" echo " $0 ~/downloads" echo " $0 /var/log --human-readable" echo "Опции:" echo " -h, --human-readable Показать размер в удобном формате (KB/MB/GB)" echo " --help Показать эту справку" exit 0 } # Проверка аргументов human_readable=false while [[ $# -gt 0 ]]; do case "$1" in -h|--human-readable) human_readable=true shift ;; --help) show_help ;; -*) echo "Ошибка: неизвестный параметр '$1'" >&2 show_help exit 1 ;; *) dir="$1" shift ;; esac done # Проверка директории [ -z "$dir" ] && { echo "Ошибка: не указана директория." >&2; show_help; exit 1; } [ ! -d "$dir" ] && { echo "Ошибка: директория '$dir' не существует." >&2; exit 1; } # Функция для форматирования размера format_size() { local size=$1 if $human_readable; then if [ "$size" -ge 1073741824 ]; then printf "%.2f GB" $(echo "$size/1073741824" | bc -l) elif [ "$size" -ge 1048576 ]; then printf "%.2f MB" $(echo "$size/1048576" | bc -l) elif [ "$size" -ge 1024 ]; then printf "%.2f KB" $(echo "$size/1024" | bc -l) else printf "%d байт" "$size" fi else printf "%d байт" "$size" fi } # Вычисление размера разными методами echo "Анализ размера директории: $dir" echo "--------------------------------" # Метод 1: Через awk size_awk=$(find "$dir" -type f -exec ls -l {} + | awk '{sum += $5} END {print sum}') echo "Метод find+awk: $(format_size "$size_awk")" # Метод 2: Через du size_du=$(du -sb "$dir" | awk '{print $1}') echo "Метод du: $(format_size "$size_du")" # Сравнение результатов echo "--------------------------------" if [ "$size_awk" -eq "$size_du" ]; then echo "✓ Результаты совпадают" else echo "⚠ Результаты различаются на $(format_size $((size_du - size_awk)))" echo "Примечание: Различие может быть связано с:" echo "- Символическими ссылками" echo "- Скрытыми файлами" echo "- Разными методами подсчета" fi # Дополнительная статистика echo "--------------------------------" echo "Дополнительная информация:" echo "- Количество файлов: $(find "$dir" -type f | wc -l)" echo "- Количество поддиректорий: $(find "$dir" -type d | wc -l | awk '{print $1-1}')"