3

В чем разница между этими двумя:

du -h --max-depth=2 /usr/* | sort -nr | head -n 20

А также:

du -h --max-depth=2 /usr/ | sort -nr | head -n 20

Я хотел бы отобразить 20 самых больших папок в папке /usr.
Включает ли эта 20 папка общие размеры подпапок?

2 ответа2

7

Есть некоторые важные изменения в поведении этих двух вызовов. Давайте рассмотрим пример со структурой, созданной:

mkdir mydir/{.a1,a2,a3}/{.b1,b2}/{.c1,c2} -p

Если вы du --max-depth=2 mydir вы получите:

0       mydir/.a1/.b1
0       mydir/.a1/b2
0       mydir/.a1
0       mydir/a2/.b1
0       mydir/a2/b2
0       mydir/a2
0       mydir/a3/.b1
0       mydir/a3/b2
0       mydir/a3
0       mydir/

Но если вы запустите

du --max-depth=2 mydir/*`

символ подстановки будет расширен и станет эквивалентом:

du --max-depth=2 mydir/a2 mydir/a3

который даст вам следующий результат:

0       mydir/a2/.b1/.c1
0       mydir/a2/.b1/c2
0       mydir/a2/.b1
0       mydir/a2/b2/.c1
0       mydir/a2/b2/c2
0       mydir/a2/b2
0       mydir/a2
0       mydir/a3/.b1/.c1
0       mydir/a3/.b1/c2
0       mydir/a3/.b1
0       mydir/a3/b2/.c1
0       mydir/a3/b2/c2
0       mydir/a3/b2
0       mydir/a3

Здесь важно отметить, что он пропустит каталог .a1 . Чтобы включить его, вам нужно выполнить что-то похожее на: du --max-depth=2 mydir/{.[!.]*,*} (но я думаю, что может быть более простой и более общий способ, который я надену не знаю). Он также не будет рассчитывать общий размер mydir .

И да, размеры, сообщаемые du включают размеры подпапок.

3

Первый подсчитывает видимые объекты в /usr . Последний подсчитывает все объекты в /usr , включая сам /usr .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .