4

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

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

3 ответа3

7

Как говорится в другом ответе, вы не можете сделать это только с помощью 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

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

4

В последней версии 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 }
1

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

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

-c Вывести на печать как CSV.

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

-n Не повторять.

-q Тихо (без баннера).

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .