Мне нужно знать размер папки и некоторых ее подпапок. Поэтому я пытаюсь использовать команду du .

Я перехожу в правильный каталог и затем пытаюсь (в bash):

[xxx@yyy TEST]$ du -sh .
4.1G    .

[xxx@yyy TEST]$ du -sh *AAA
3.2G    123_AAA

[xxx@yyy TEST]$ du -sh . *A
4.1G    .
2.7G    123_AAA

Как это возможно, что я получаю разные результаты для размера 123_AAA (3,2 ГБ, затем 2,7 ГБ) с моей второй и третьей командой?

заранее спасибо

3 ответа3

1

Я думаю, что дю знает о жестких ссылках. Попробуй du -shl . *A

0

du обрабатывает аргументы по порядку и отслеживает иноды, чтобы они учитывались только один раз (или дважды, если вы используете -c). Я не вижу, как 123_AAA подсчитывается, когда он указан после . , тем не мение. Первое объяснение, о котором я подумал, заключается в том, что символические ссылки могут обрабатываться по-разному, если они перечислены в командной строке, но это с опцией -D , а не по умолчанию. Другой вариант - не пересекать границы файловой системы, но -x по умолчанию тоже не включен.

-1

Однако я не смог воспроизвести эту ошибку при проверке страниц руководства:

SYNOPSIS
       du [OPTION]... [FILE]...

Поэтому я думаю, что вы можете иметь только один аргумент файла за раз. Не знаю, почему вы даже получаете результат для последней команды:

wilhelm@server ~ $ du -sh .
2.1G    .
wilhelm@server ~ $ du -h wa
4.0K    wa
wilhelm@server ~ $ du -sh wa
4.0K    wa
wilhelm@server ~ $ du -sh . wa
2.1G    .

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