Вопрос: Используя du.exe (Sysinternals), можно ли показывать папки выше определенного размера?


du.exe позволяет рекурсивно идентифицировать папки, занимающие большое пространство. Например, следующее будет отображаться размер всех папок из c:\ 3-уровневая глубина:

du.exe -l 3 c:\

Как я могу отфильтровать этот вывод, чтобы показывать только папки выше 1 ГБ?

Вот выдержка из du.exe для справки:

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
2018-05-05 16:58


Источник




Ответы:


Как говорится в другом ответе, вы не можете это сделать du.exe в одиночестве. PowerShell на помощь!

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

объяснение

Нарушая эту длинную команду вниз в отдельные биты, каждый из которых передается в следующую:

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

Это в основном то, с чего вы начали, кроме -c параметр сообщает du для форматирования вывода в формате CSV.

ConvertFrom-Csv -Header Size,Path

Это приводит к выходу CSV из du и преобразует его в хэш-таблицу PowerShell. поскольку du не содержит заголовок с именами столбцов, который должен выполняться вручную.

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

Это фильтрует данные, возвращая только те строки, размер которых превышает 1 ГБ (du возвращает размеры в КБ и 1 ГБ = 1048576 КБ). Обратите внимание [int] чтобы PowerShell знал, что он имеет дело с числовыми данными.

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

Это сортирует данные по размеру в порядке убывания (снова указывая, что данные для сортировки являются числовыми). Это, конечно, необязательно.


7
2018-05-05 17:49





В последней версии версии du.exe добавление заголовка с Powershell ConvertFrom-Csv не работает из коробки, потому что du.exe добавляет его собственный заголовок в список. Нам нужно выбрать существующий заголовок с помощью команды select.

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

4
2017-07-01 19:22





Эти опции недоступны с DU 1.4

Использование: du [-c] [-l (уровни) | -n | -v] [-u] [-q] (каталог)

-c Печатать вывод как CSV.

-l Укажите глубину глубины подкаталога (по умолчанию все уровни).

-n Не рекурсивно.

-q Тихий (без знака).

-u Рассчитывать каждый экземпляр файла с жесткой привязкой.

-v Показать размер (в КБ) промежуточных каталогов.

Поэтому просто использование DU не может ограничить вывод чем-то определенного размера.


1
2018-05-05 17:15



Удачно сочетается с другими инструментами, доступными в командной строке. - Iain
Тогда ты пойдешь. У Indrek есть ответ, который вы хотите. Я дал ему +1. - Bon Gart