Существует 99 папок с другим размером. Я хотел бы знать, какая из этих папок является медианой в зависимости от их размера, и как распечатать название папки при нахождении его?
Предположения:
a
, b
, c
и т.д., но нет a/x
.Если какой-либо из них, предположение является неправильным, скажите, и я попытаюсь обновить ответ.
Команда du
скажет Вам размер всего в каждом каталоге, печатающем для каждого каталога размер и имя. Это даст Вам 100 строк: Ваши 99 каталогов и один для родительского каталога.
Команда sort -g
может отсортировать результаты в порядке числового первого поля, которое является размером. Медиана 99 результатов теперь будет в 50-й строке.
Команда tail
может выбрать 50-ю строку.
Так объедините их:
cd ~/wherever/
du | sort -g | tail -n +50
Сначала получите список того, что Вы считаете и считаете строки. Следующие работы и для каталогов и для файлов (заменяют $* тем, что Вы хотите считать):
du -s $* | wc -l
Вы сказали, что это в Вашем случае равняется 99. Разделитесь на 2 и добавьте 1 для получения номера заказа среднего файла/папки. В Вашем случае это равняется 50.
Теперь извлеките строку, содержащую средний файл/папку размера:
du -s $* | sort -n | tail -n +50 | head -1
(обратите внимание, что "du-s" не включает файл или каталог, добавленный дважды, например, "du-s / и т.д./etc/passwd" возвращает только сводку для / и т.д.),