it-swarm-es.tech

¿Cómo obtengo el tamaño de un directorio en la línea de comando?

Traté de obtener el tamaño de un directorio (que contiene directorios y subdirectorios) usando el comando ls con la opción l. Parece funcionar para archivos (ls -l file name), pero si intento obtener el tamaño de un directorio (por ejemplo, ls -l /home), Obtengo solo 4096 bytes, aunque en conjunto es mucho más grande.

1142
Abdul Al Hazred

du -sh file_path

Explicación

  • El comando du (d isc sage) estima el uso del espacio file_path
  • Las opciones -sh son de man du):

      -s, --summarize
             display only a total for each argument
    
      -h, --human-readable
             print sizes in human readable format (e.g., 1K 234M 2G)
    

    Para verificar más de un directorio y ver el total, use du -sch:

      -c, --total
             produce a grand total
    
1585
sam

Simplemente use el comando du:

du -sh -- *

le dará el uso acumulativo del disco de todos los directorios, archivos, etc. no ocultos en el directorio actual en formato legible por humanos.

Puede usar el comando df para conocer el espacio libre en el sistema de archivos que contiene el directorio:

df -h .
347
Pacifist

du es tu amigo. Si solo quieres saber el tamaño total de un directorio, salta a él y ejecuta:

du -hs

¡¿Si también desea saber qué subcarpetas ocupan cuánto espacio en disco ?! Puede extender este comando a:

du -h --max-depth=1 | sort -hr

que le dará el tamaño de todas las subcarpetas (nivel 1). La salida se ordenará (la carpeta más grande en la parte superior).

212
Chrispie

du puede ser complicado de usar ya que aparentemente tienes que pasar 100 argumentos para obtener una salida decente. Y descubrir el tamaño de las carpetas ocultas es aún más difícil.

Haz tu vida más fácil y usa ncdu.

ncdu

Obtiene resúmenes por carpeta que son fácilmente navegables.

77
Teque5

Otros han mencionado du, pero también me gustaría mencionar Ncd - que es una versión ncurses de du y proporciona interactividad: puede explorar la jerarquía de directorios directamente y ver los tamaños de los subdirectorios.

35
Tblue

El comando du muestra el uso del disco en el archivo.

La opción -h Muestra los resultados en forma legible para humanos (por ejemplo, 4k, 5M, 3G).

du -h (file name)
28
jackotonye

Todos los ejemplos anteriores le indicarán el tamaño de los datos en el disco (es decir, la cantidad de espacio en disco que utiliza un archivo en particular, que generalmente es mayor que el tamaño real del archivo). Hay algunas situaciones en las que estos no le proporcionarán un informe preciso, si los datos no se almacenan realmente en este disco en particular y solo existen referencias de inodo.

En su ejemplo, ha utilizado ls -l en un solo archivo, que habrá devuelto el tamaño real del archivo, NO su tamaño en el disco.

Si desea conocer los tamaños de archivo reales, agregue la opción -b a du.

du -csbh .
24
Andy Foster

personalmente creo que esto es mejor, si no quieres usar ncdu

# du -sh ./*
17
ConnerMan
df -h .; du -sh -- * | sort -hr

Esto muestra cuánto espacio de disco le queda en la unidad actual y luego le indica cuánto ocupa cada archivo/directorio. p.ej.,

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       206G  167G   29G  86% /
115M    node_modules
2.1M    examples
68K     src
4.0K    webpack.config.js
4.0K    README.md
4.0K    package.json
16
mpen

I se este comando como root :

Sudo ls -1d */ | Sudo xargs -I{} du {} -sh && Sudo du -sh
10
Eduard Florinescu

encuentre todos los archivos en el directorio actual de forma recursiva y resuma su tamaño:

find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'
10
Leon Chang

Aquí hay una función para sus .bash_aliases

# du with mount exclude and sort
function dusort () {
    DIR=$(echo $1 | sed 's#\/$##')
    du -scxh $(mount | awk '{print $3}' | sort | uniq \
     | sed 's#/# --  exclude=/#') $DIR/* | sort -h
}

salida de muestra:

$ dusort /
...
0       /mnt  
0       /sbin
0       /srv
4,0K    /tmp
728K    /home
23M     /etc
169M    /boot  
528M    /root
1,4G    /usr
3,3G    /var
4,3G    /opt
9,6G    total

para subdirs:

$ dusort .
$ dusort /var/log/
10
feldversuch

Una variante más:

du -h --max-dep=1
9
0x8BADF00D

Aquí hay un script POSIX que funcionará con:

  • Un archivo
  • Archivos
  • Un directorio
  • Directorios
ls -A -R -g -o "[email protected]" | awk '{n1 += $3} END {print n1}'
7
Steven Penny

Tenga en cuenta que du imprime el espacio que ocupa un directorio en el medio que generalmente es más grande que el tamaño total de todos los archivos en el directorio, porque du tiene en cuenta el tamaño de toda la información auxiliar que se almacena en los medios para organizar el directorio de acuerdo con el formato del sistema de archivos.

Si el sistema de archivos es compresible, entonces du puede generar un número aún menor que el tamaño total de todos los archivos, ya que los archivos pueden estar comprimidos internamente por el sistema de archivos y, por lo tanto, ocupan menos espacio en los medios que solo la información sin comprimir ellos contienen. Lo mismo si hay archivos dispersos.

si hay enlaces duros en el directorio, entonces du también puede imprimir un valor más pequeño porque varios archivos diferentes en el directorio hacen referencia a los mismos datos en los medios.

Para obtener el tamaño total directo de todos los archivos en el directorio, se puede usar la siguiente expresión de Shell de una línea (suponiendo un GNU):

find . ! -type d -print0 | xargs -r0 stat -c %s | paste -sd+ - | bc

o incluso más corto:

find . ! -type d -printf '%s\n' | paste -sd+ - | bc

Simplemente suma los tamaños de todos los archivos que no son de directorio en el directorio (y sus subdirectorios recursivamente) uno por uno. Tenga en cuenta que para los enlaces simbólicos, informa el tamaño del enlace simbólico (no del archivo al que apunta el enlace simbólico).

6
anton_rh

Puedes usar

du -sh directory/

y

du -sh filename

para saber el espacio ocupado por la carpeta o archivo.

df -h

mostrará el uso del disco en formato legible para humanos -h hace eso.

También hay un programa basado en GUI llamado Disk Usage Analyzer.

6
arupgsh