Questão Usando du.exe (Sysinternals) é possível mostrar pastas acima de um certo tamanho?


du.exe permite identificar recursivamente pastas que ocupam uma grande quantidade de espaço. Por exemplo, o seguinte mostrará o tamanho de todas as pastas de c:\ 3 níveis de profundidade:

du.exe -l 3 c:\

Como posso filtrar essa saída para mostrar apenas as pastas acima de 1 GB?

Aqui está um extrato da saída de du.exe para referência:

Du v1.4 - report directory disk usage
Copyright (C) 2005-2011 Mark Russinovich
Sysinternals - www.sysinternals.com

   6,344,864  c:\Windows\winsxs
  18,268,671  c:\Windows
 483,343,308  c:\
Files:        412125
Directories:  42072
Size:         494,943,548,281 bytes
Size on disk: 487,560,269,896 bytes

4


origem




Respostas:


Como a outra resposta diz, você não pode fazer isso com du.exe sozinho. PowerShell para o resgate!

.\du.exe -c -l 3 C:\ | ConvertFrom-Csv -Header Size,Path | Where-Object { [int]$_.Size -gt 1048576 } | Sort-Object { [int]$_.Size } -descending

Explicação

Quebrando esse longo comando nos bits individuais que são canalizados para o próximo:

.\du.exe -c -l 3 C:\

Isso é basicamente o que você começou, exceto o -c parâmetro informa du formatar a saída como CSV.

ConvertFrom-Csv -Header Size,Path

Isso leva a saída CSV de du e converte-o em uma hashtable do PowerShell. Desde a du não fornece um cabeçalho com nomes de colunas, isso deve ser feito manualmente.

Where-Object { [int]$_.Size -gt 1048576 }

Isso filtra os dados, retornando apenas as linhas em que o tamanho é maior que 1 GB (du retorna tamanhos em KB e 1 GB = 1048576 KB). Note o [int] em parte, para informar ao PowerShell que está lidando com dados numéricos.

Sort-Object { [int]$_.Size } -descending

Isso classifica os dados por tamanho, em ordem decrescente (novamente especificando que os dados a serem classificados são numéricos). Isso é opcional, claro.


7





Na versão mais recente do du.exe, anexar um cabeçalho com o Powershell ConvertFrom-Csv não funciona imediatamente, porque o du.exe anexa seu próprio cabeçalho na listagem. O que precisamos fazer é selecionar o cabeçalho existente com o comando select.

du.exe -c -l 3 C:\ | ConvertFrom-Csv | select Path,DirectorySize | Where-Object { [int]$_.DirectorySize -gt 1048576 }

4





Aquelas opções não estão disponíveis com DU 1.4

Uso: du [-c] [-l (níveis) | -n | -v] [-u] [-q] (diretório)

-c Imprime a saída como CSV.

-l Especifica a profundidade de informações do subdiretório (o padrão é todos os níveis).

n Não recurse.

-q Silencioso (sem banner).

-u Conta cada instância de um arquivo com link físico.

-v Mostra o tamanho (em KB) dos diretórios intermediários.

Então, apenas usando DU não pode limitar a saída para algo de um tamanho específico.


1



Feliz em combinar com outras ferramentas disponíveis na linha de comando. - Iain
Então lá vai você. Indrek tem a resposta que você quer. Eu dei um +1. - Bon Gart