Nenhum dos métodos de travessia do Unix padrão (como `find`,` ls` ou `árvore`) calcular diretamente o tamanho total de cada diretório em um único comando. Eles normalmente mostram o tamanho dos arquivos em um diretório, mas não a soma recursiva dos tamanhos de todos os arquivos e subdiretórios nesse diretório.
Para calcular o tamanho total de cada diretório, você normalmente usaria `du` (uso de disco). No entanto, `du` não inerentemente" atravessa "o sentido de visitar cada diretório e imprimir seu nome e tamanho separadamente. Ele relata o tamanho de cada diretório, *incluindo seus subdiretos *, que é sutilmente diferente de uma travessia que listaria explicitamente cada diretório e seu tamanho independentemente de seus filhos.
Veja como você pode obter uma travessia de diretório que mostra o tamanho total de cada diretório:
usando `du` com` find`: Isso combina `encontre` para o Traversal e` du` para cálculo de tamanho. `find` lista cada diretório, e` Xargs` alimenta esses diretórios para `du ':
`` `BASH
encontrar . -Type d -print0 | Xargs -0 -i {} du -sh {}
`` `
* `encontre. -Type d -Print0`:Isso encontra todos os diretórios (`-Type d`) começando no diretório atual (`. ') e imprime seus nomes separados por caracteres nulos (`-Print0`). Os caracteres nulos são cruciais para lidar com nomes de arquivos com espaços ou caracteres especiais.
* `XARGS -0 -i {} du -sh {}`:Isso leva os nomes de arquivos separados nulos de `find` e roda` du -sh` em cada um. `-0` diz a` xargs` para esperar uma entrada separada por nulo, `-i {}` define `{}` como um espaço reservado para o nome do arquivo, `du -sh` mostra o tamanho em um formato legível pelo ser humano (`-h) e apenas o resumo (não o tamanho de cada arquivo)
Este é o mais próximo que você chegará de uma travessia que explicitamente fornece o tamanho de cada diretório. O comando `du` em si não é estritamente um algoritmo de travessia, mas quando usado com` find`, a combinação executa a ação desejada.