Как я могу перечислить каталоги и их размеры в командной строке?

15

Я хотел бы видеть размеры подпапок в папке, похожей на du -shкоманду linux . Как я могу перечислить каталоги и их размеры в командной строке?

giorgio79
источник
PS Я нашел это бесплатное небольшое программное обеспечение также полезным windirstat.info
giorgio79
Спасибо за указание du -sh- я использую cmder в Windows, и он работал хорошо.
Jbaums

Ответы:

19

Попробуйте утилиту использования диска от 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 не доступен и сторонние утилиты не приемлемы).

Индрек
источник
Выглядит хорошо. Немного подождем, чтобы узнать, есть ли собственный способ сделать это в командной строке :)
giorgio79
@ giorgio79 Смотрите обновленный ответ. Это возможно в командной строке, но я бы порекомендовал использовать диск или использовать PowerShell.
Индрек
0

У меня нет опыта работы с duLinux. Но в Windows я использую, dir /sчтобы перечислить все папки и подпапки вместе с размерами файлов.

Анкит
источник
1
/SПереключатель не показывает размеры каталогов, он просто делает команда рекурсивно пройти через все подкаталоги.
Индрек
3
Посмотрите внимательно, он показывает размер каждой папки также. Хотя его не так много для человека.
Анкит,
Ах, да, я понимаю, что вы имеете в виду - под списком файлов каждого подкаталога он показывает общий размер всех файлов в этом каталоге. Как вы говорите, это не совсем легко читать, а размеры не показываются рекурсивно.
Индрек