du
pode aceitar uma lista de arquivos ou diretórios do stdin (ou versões suficientemente novas podem, de qualquer forma). Então você pode usar find
e amigos para filtrar e fornecer esta lista:
find Pictures -mindepth 2 -type d \( -execdir test -f '{}/0k' \; -o -print0 \) |
du --files0-from=- -h
- Com
-mindepth 2
,find
listará apenas os diretórios (-type d
) com pelo menos dois níveis de profundidade (entãoPictures/*/*
) - Em cada um desses diretórios,
find
executarátest -f "{}/0k"
, que simplesmente testa a existência de um arquivo denominado0k
. ({}
será substituído porfind
com o diretório.)- Se o teste for bem sucedido, nada acontece. Caso contrário, o caminho do diretório é impresso com um ASCII NUL no final (
-o print0
). - A maneira como
-o
funciona, osexecdir
e-print0
precisam ser agrupados usando(
,)
.
- Se o teste for bem sucedido, nada acontece. Caso contrário, o caminho do diretório é impresso com um ASCII NUL no final (
-
du
, então, obterá esses nomes de diretório e, felizmente, fornecerá o uso do disco.
Classificação:
find Pictures -mindepth 2 -type d \( -execdir test -f '{}/0k' \; -o -print0 \) |
du --files0-from=- -h |
sort -rh