¿Cómo puedo enumerar directorios y sus tamaños en el símbolo del sistema?

¿Cómo puedo enumerar directorios y sus tamaños en el símbolo del sistema?

Me gustaría ver los tamaños de las subcarpetas en una carpeta, similar al du -shcomando de Linux. ¿Cómo puedo enumerar directorios y sus tamaños en el símbolo del sistema?

Respuesta1

Prueba elUso del discoutilidad de Sysinternals. Específicamente, du -l 1debería mostrar el tamaño de cada subdirectorio del directorio actual. Para obtener más información, ejecute dusin ningún parámetro.


Si PowerShell está bien, intente lo siguiente:

Get-ChildItem |
Where-Object { $_.PSIsContainer } |
ForEach-Object {
  $_.Name + ": " + (
    Get-ChildItem $_ -Recurse |
    Measure-Object Length -Sum -ErrorAction SilentlyContinue
  ).Sum
}

Los tamaños están en bytes. Para formatearlos en alguna unidad más grande como MB, intente lo siguiente (condensado en una línea):

Get-ChildItem | Where-Object { $_.PSIsContainer } | ForEach-Object { $_.Name + ": " + "{0:N2}" -f ((Get-ChildItem $_ -Recurse | Measure-Object Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB) + " MB" }

Para más información, vereste artículo en Technet.

Si desea un formato más flexible de los tamaños (eligiendo kB/MB/GB/etc según el tamaño real), consulteesta pregunta y sus respuestas.


No creo que sea posible hacer lo que quieres desde la línea de comandos normal y con sólo unos pocos comandos simples. Vereste script como ejemplo(No lo copiaré aquí porque no creo que valga la pena seguir ese enfoque, a menos que PowerShell no esté disponible y las utilidades de terceros no sean aceptables).

Respuesta2

No tengo experiencia con duLinux. Pero en Windows suelo dir /senumerar todas las carpetas y subcarpetas junto con los tamaños de los archivos.

Respuesta3

Esta es una modificación deLa respuesta de Indrek.. Agregué lo siguiente:

  • lo hizo recursivo para ir más lejos en los subdirectorios
  • Se agregó un umbral de tamaño para omitir directorios más pequeños.
  • reemplazó los nombres de los directorios con su ruta relativa desde el directorio actual
  • resultados ordenados por su ruta (me pareció más conveniente en lugar de ordenarlos por tamaño, cuando ya están filtrados por tamaño)
  • Se agregó algo de formato para que los resultados sean más legibles.

Entonces, configure $minsizeMBy $maxdepthcon los valores deseados y ejecute el script.

$minsizeMB = 100; 
$maxdepth = 5; 
Get-ChildItem -depth $maxdepth -Recurse |
    Where-Object { $_.PSIsContainer } |
    Select-Object FullName | 
    Sort-Object FullName |
    ForEach-Object { 
        $directory = Get-Item $_.FullName;
        $path = Resolve-Path -Relative $directory.FullName ; 
        $size = ((Get-ChildItem $directory -Recurse | Measure-Object Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB) ; 
        if ($size -ge $minsizeMB) { "{0,-90}: {1:N2} MB" -f ($path, $size) } 
    }

información relacionada