Могу ли я сделать инклюзивное ду, в отличие от эксклюзивного?

257
CaptainSkyfish

Мне нужно выполнить поиск du, который захватывает только определенные подпапки. Например, вот структура каталогов:

du -b  0 ./678  21 ./679/536/Content_Repository_PoC_-_Main  73 ./Content_Repository_PoC_-_C-CDN_JIT_Packaging/679/536  255034 ./PoC_-_C-CDN_JIT_Packaging/680/13/processed_3348d8a9-a  201034 ./PoC_-_C-CDN_JIT_Packaging/683/13/processed_cec582f5-1  208034 ./PoCx/225/processed_cec27825-1 

Мне нужно, чтобы он возвращал итоговую сумму ТОЛЬКО подпапок со словом «обработано» в имени подпапки (поэтому в этом примере только три нижних). Я могу ожидать огромное количество положительных результатов.

Другими словами, du --exclude='processed*'я бы хотел что-то вроде

du --exclude!='processed*' 
0

1 ответ на вопрос

0
xenoid

С находкой:

find -type d -name 'processed*' exec du {} \; 

Если вы хотите общий размер:

find -type d -name 'processed*' exec du -c {} + 

(«+» обрабатывает все соответствующие файлы одной командой)

Если все ваши обработанные * находятся на одном уровне каталогов, вы также можете избежать поиска с некоторыми оболочками (bash, zsh):

du -c */*/processed* 
Спасибо, но с этой командой поиска я получил "find: Аргументы для -type должны содержать только одну букву". Должен отметить, что это на Red Hat Enterprise 6.6. CaptainSkyfish 7 лет назад 0
Я фактически закончил тем, что заставлял это работать с измененным "обработкой имени поиска * -exec du -bs {} +" CaptainSkyfish 7 лет назад 0
Исправлены команды ... означают `find -type d` xenoid 7 лет назад 0

Похожие вопросы