Мне часто приходится очищать некоторые каталоги, потому что они переполнены. Давайте принимать /var
в качестве примера, поскольку это распространенный по понятным причинам.
Чтобы увидеть, какие подкаталоги занимают много места, я использую du -sh /var/*
. К сожалению, у меня есть огромные данные в подкаталогах /var
, которые расположены на других разделах, кроме /var
(например. /var/chroot
) и зря сильно замедляет процесс.
Сейчас du
имеет -x
флаг, исключающий другие точки монтирования. Он отлично работает при выполнении du -shx /var
но не с du -shx /var/*
поскольку *
расширяется оболочкой, поэтому /var/chroot
явно отправлено du
.
Другой вариант, который мне предложили, заключался в использовании find /var -xdev -mindepth 1 -maxdepth 1 -exec du -sh {} \+
но опять же, даже если find не следовать другие точки монтирования, это все еще печатает их и передает их du
, следовательно, снова не смог достичь своей цели.
Прежде чем я напишу ужасную функцию bash (или программу perl / python), которая анализирует df
или mount
в цикле, знает ли кто-нибудь чистый способ достичь того, что я пытаюсь сделать?
похоже, что вам нужно это:
du -hx --max-depth 1 /var
Получил ответ от коллеги:
du -hx --max-depth=1 /var
делает свое дело.