Я хотел бы видеть размеры подпапок в папке, похожей на команду linux du -sh
. Как я могу перечислить каталоги и их размеры в командной строке?
2 ответа
Попробуйте утилиту использования диска от Sysinternals. В частности, du -l 1
должен показывать размер каждого подкаталога текущего каталога. Для получения дополнительной информации, запустите du
без каких-либо параметров.
Если с PowerShell все в порядке, попробуйте следующее:
Get-ChildItem |
Where-Object { $_.PSIsContainer } |
ForEach-Object {
$_.Name + ": " + (
Get-ChildItem $_ -Recurse |
Measure-Object Length -Sum -ErrorAction SilentlyContinue
).Sum
}
Размеры указаны в байтах. Чтобы отформатировать их в каком-то более крупном блоке, таком как MB, попробуйте следующее (сжато до одной строки):
Get-ChildItem | Where-Object { $_.PSIsContainer } | ForEach-Object { $_.Name + ": " + "{0:N2}" -f ((Get-ChildItem $_ -Recurse | Measure-Object Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB) + " MB" }
Для получения дополнительной информации см. Эту статью в Technet.
Если вы хотите более гибкое форматирование размеров (выбирая КБ / МБ / ГБ / и т.д. В зависимости от фактического размера), посмотрите этот вопрос и ответы на него.
Я не думаю, что можно делать то, что вы хотите, из обычной командной строки и только с несколькими простыми командами. Посмотрите на этот скрипт в качестве примера (я не собираюсь копировать его здесь, потому что я не верю, что такой подход стоит использовать, если только PowerShell не доступен и сторонние утилиты не приемлемы).
У меня нет опыта работы с du
в Linux. Но в Windows я использую dir /s
чтобы вывести список всех папок и подпапок вместе с размерами файлов.