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

4

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-levels deep:

du.exe -l 3 c:\

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

Aqui está uma extração 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
    
por Iain 05.05.2012 / 18:58

3 respostas

7

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 que o parâmetro -c informa du para formatar a saída como CSV.

ConvertFrom-Csv -Header Size,Path

Isso tira a saída CSV de du e a converte em uma hashtable do PowerShell. Como 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). Observe a parte [int] , 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.

    
por 05.05.2012 / 19:49
4

Na versão mais recente do du.exe, acrescentar um cabeçalho com o Powershell ConvertFrom-Csv não funciona imediatamente, pois 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 }
    
por 01.07.2014 / 21:22
1

Essas opções não estão disponíveis no DU 1.4

Usage: du [-c] [-l (levels) | -n | -v] [-u] [-q] (directory)

-c Print output as CSV.

-l Specify subdirectory depth of information (default is all levels).

-n Do not recurse.

-q Quiet (no banner).

-u Count each instance of a hardlinked file.

-v Show size (in KB) of intermediate directories.

Portanto, apenas usar o DU não pode limitar a saída a algo de um tamanho específico.

    
por 05.05.2012 / 19:15