![我可以做一个包容性的 du,而不是排他性的吗?](https://linux22.com/image/1544260/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%81%9A%E4%B8%80%E4%B8%AA%E5%8C%85%E5%AE%B9%E6%80%A7%E7%9A%84%20du%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E6%8E%92%E4%BB%96%E6%80%A7%E7%9A%84%E5%90%97%EF%BC%9F.png)
我需要执行 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
我需要它仅返回子文件夹名称中带有单词“processed”的子文件夹的总和(因此在此示例中,仅返回底部三个)。我可以期待大量的积极结果。
换句话说,du --exclude='processed*'
我想要的是类似
du --exclude!='processed*'
答案1
使用 find:
find -type d -name 'processed*' exec du {} \;
如果您想要总大小:
find -type d -name 'processed*' exec du -c {} +
(‘+’ 使用一个命令处理所有匹配的文件)
如果所有“processed*”都在同一目录级别,那么您也可以避免使用某些 shell(bash、zsh)进行查找:
du -c */*/processed*