Список всех каталогов и сортировка по размеру
Хотя дни ограниченного пространства на жестком диске, похоже, прошли, поскольку жесткие диски для хранения данных большого размера сегодня доступны по доступной цене. Однако, если вы чувствуете, что вам не нужен жесткий диск большей емкости, но ваш жесткий диск заполнен, это может указывать на то, что в вашей системе хранится много ненужных данных. Это как раз мой случай, и мне нужно регулярно убирать. Я предпочитаю удалять данные в соответствии с размером, поэтому первый шаг начинается с самого большого каталога в моем домашнем каталоге.
Вот пара команд bash, которые я использую для своей процедуры очистки данных:
Список всех каталогов и файлов с соответствующим размером
Эта команда выведет список только файлов и каталогов в вашем текущем рабочем каталоге. Удалите опцию -s, чтобы увидеть рекурсивный вывод. -h обозначает читабельный вывод.
$ du -sh *
Список всех каталогов и сортировка по размеру
Предыдущая команда не очень полезна, так как она не сортирует и печатает много ненужных файлов, которые нас не беспокоят. Следующая команда linux печатает все каталоги в текущем рабочем каталоге, включает соответствующий размер в мегабайтах и сортирует их от самых больших до самых маленьких.
$ du -m --max-depth 1 | sort -rn
Список ТОП 10 по размеру каталогов
Наш день очистки данных мой конец, очистив первые 10 самых больших каталогов, которые мы находим. Так что нас могут заинтересовать только первые крупнейшие каталоги. Чтобы выяснить, какие из них, используйте предыдущую команду и включите заголовок:
$ du -m --max-depth 1 | sort -rn | head -11
Вывести список всех каталогов и отсортировать по размеру bash скрипт
Используя приведенную выше команду, мы можем создать скрипт bash, чтобы сделать нашу жизнь проще. Следующий скрипт bash примет 2 аргумента. Первым аргументом будет имя каталога, в котором мы начнем наш поиск, а вторым аргументом будет количество каталогов, которое должен вывести скрипт.
#!/bin/bash if [ $# != 2 ]; then echo "Incorrect number of arguments !" >&2 echo "USAGE: sortdirbysize [DIRECTORY] " fi du --block-size=1M --max-depth 1 $1 | sort -rn | head -$2
Пример:
$ ./sort-dir-by-size.sh /home/linux 15