Використання --exclude з командою du


66

Це, мабуть, щось базове, але я не в змозі змусити його працювати. Я намагаюся використовувати DU, щоб отримати загальний розмір файлів мінус певні каталоги. Мені потрібно виключити один конкретний каталог, який називається, uploadsале не кожен, який називається uploads. Наприклад, моя файлова структура виглядає приблизно так:

/store
  /uploads
    /junk_to_ignore
    /more_junk_to_ignore
  /user_one
    /uploads
  /user_two

Я можу виконати таку команду:

du -ch --exclude=uploads* 

і це дає мені розмір файлу за мінусом всіх каталогів "uploads". Однак у спробі виключити певні каталоги (та всі її підкаталоги) я не вдається. Я спробував варіанти:

du -ch --exclude=./uploads*
du -ch --exclude='/full/path/to/uploads/*'

але, здається, це не можна зрозуміти. Як виключити конкретний каталог?


username: store$ du -ch --exclude=./uploadsпрацював (із підстановкою та без неї) для мене з каталогу магазину. Ви виконуєте цю команду саме та з папки магазину? І це повинен бути відносний шлях (який знаходить бачення / відбитки), а не абсолютний.
Кевін

Відповіді:


88

Ви майже знайшли :)

du -ch --exclude=./relative/path/to/uploads

Зверніть увагу на відсутність зірочок у кінці. Зірочка означає, що всі підкаталоги в розділі "завантаження" повинні бути опущені, але не файли безпосередньо в цьому каталозі.


4
Дивний ... синтаксис з dot ( du -sb --exclude=./relative/path/to/uploads) не працює для мене. Це робиться:du -sb --exclude relative/path/to/uploads
Nux

4
@Nux, ймовірно, ваш аромат du. У My (OSX) навіть немає --exclude, натомість він -I maskповинен "Ігнорувати файли та каталоги, що відповідають вказаній масці". У вашому робочому прикладі ви також опускаєте це =, змушуючи мене далі думати, що це лише ваша версія duбути дещо duфедеральною.
phatskat

Так, версія [OSX] [1] здається значно спрощеною версією [Linux du] [2]. [1]: developer.apple.com/library/mac/documentation/Darwin/Reference/… [2]: linux.die.net/man/1/du
Nux

Що робити, якщо я хочу виключити кілька каталогів, наприклад тут, виключаючи каталоги junk_to_ignore та завантажуючи каталоги?
Кіран К Телукунта

Чому він працює відносним шляхом, але не абсолютним шляхом? Дуже дивно!
Нік

8

Щоб виключити декілька каталогів, просто перенесіть прапор --exclude ще раз.

du -ch --exclude=relative/path/to/uploads --exclude other/path/to/exclude

1
ви також можете використовуватиdu -ch --exclude={relative/path/to/uploads,other/path/to/exclude}
Hajo Thelen


1

Якщо вам доводиться працювати на macOS, ви встановлюєте GNU Coreutils за допомогою наступної команди.

brew install coreutils

Більшість команд, встановлених Coreutils, мають префікс g, оскільки вони мають ім'я BSD, встановлене на macOS. Тоді ви можете зробити наступне.

gdu --exclude=Microsoft /Library/Fonts/
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.