1

В Linux я могу сгенерировать вывод CSV с помощью следующей команды

du -hs /home/*/imap/*/* | sort -rh | sed 's/\//\t/g' | awk '{print $5 " " $6 " " $1}' | sed 's/ /,/g'

Эта команда выводит CSV-файл со следующей структурой:

 domain,username,userfoldersize 

Я пытаюсь получить аналогичный вывод с PowerShell.

Я нашел этот код в Интернете, но он не отображает правильные размеры. Размеры папок, превышающие размеры в ГБ, по-прежнему отображаются в МБ. Кроме того, это идет далеко в подкаталоге.

$startFolder = 'C:\path\to\mail\domain\user'

$colItems = (Get-ChildItem $startFolder | Measure-Object -property length -sum)
"$startFolder -- " + "{0:N2}" -f ($colItems.sum / 1MB) + " MB"

$colItems = (Get-ChildItem $startFolder -recurse | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object)
foreach ($i in $colItems)
    {
        $subFolderItems = (Get-ChildItem $i.FullName | Measure-Object -property length -sum)
        $i.FullName + " -- " + "{0:N2}" -f ($subFolderItems.sum / 1MB) + " MB"
    }

У меня есть такой каталог: C:\path\to\mail\domain\user и я хочу, чтобы он отображал полный путь к папке user и отображал размер папки user . В удобочитаемом формате. Например: 500 МБ, 5 ГБ и т. д.

1 ответ1

1

Судя по вашему вопросу, вам кажется, что вы знакомы с командной строкой Linux. В Windows вам не обязательно отказываться от этих знаний и изучать новые команды: вместо этого вы можете использовать то, что вы уже знаете, и продолжать использовать знакомые bash , du , sort , sed и awk .

Мое предложение :

  1. использовать Cygwin или cmder или подобный инструмент для того, чтобы продолжать делать свои вещи
  2. научиться Powershell делать новые вещи

Примечание: иногда переносная установка - единственный путь; в этом случае я бы порекомендовал cmder.

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