Как знать, какой файл является медианой в зависимости от своего размера

Существует 99 папок с другим размером. Я хотел бы знать, какая из этих папок является медианой в зависимости от их размера, и как распечатать название папки при нахождении его?

0
задан 18 October 2018 в 12:03

2 ответа

Предположения:

  • В заголовке говорится желание файла среднего размера, и тело предлагает, чтобы Вы хотели каталог среднего размера. Я предположу, что Вы имеете в виду каталог.
  • Каталоги являются точно одним уровнем глубоко - то есть, у Вас есть каталоги a, b, c и т.д., но нет a/x.
  • Если несколько каталогов имеют тот же размер, Вы довольны результатом, являющимся любым из них.
  • Существует точно 99 каталогов.

Если какой-либо из них, предположение является неправильным, скажите, и я попытаюсь обновить ответ.

Команда du скажет Вам размер всего в каждом каталоге, печатающем для каждого каталога размер и имя. Это даст Вам 100 строк: Ваши 99 каталогов и один для родительского каталога.

Команда sort -g может отсортировать результаты в порядке числового первого поля, которое является размером. Медиана 99 результатов теперь будет в 50-й строке.

Команда tail может выбрать 50-ю строку.

Так объедините их:

cd ~/wherever/
du | sort -g | tail -n +50
0
ответ дан 27 October 2019 в 07:42

Сначала получите список того, что Вы считаете и считаете строки. Следующие работы и для каталогов и для файлов (заменяют $* тем, что Вы хотите считать):

    du -s $* | wc -l

Вы сказали, что это в Вашем случае равняется 99. Разделитесь на 2 и добавьте 1 для получения номера заказа среднего файла/папки. В Вашем случае это равняется 50.

Теперь извлеките строку, содержащую средний файл/папку размера:

    du -s $* | sort -n | tail -n +50 | head -1

(обратите внимание, что "du-s" не включает файл или каталог, добавленный дважды, например, "du-s / и т.д./etc/passwd" возвращает только сводку для / и т.д.),

0
ответ дан 27 October 2019 в 07:42

Другие вопросы по тегам:

Похожие вопросы: