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.
du -sh file_path
Explicación
du
(d isc sage) estima el uso del espacio file_pathLas 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
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 .
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).
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.
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)
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 .
personalmente creo que esto es mejor, si no quieres usar ncdu
# du -sh ./*
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
Sudo ls -1d */ | Sudo xargs -I{} du {} -sh && Sudo du -sh
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}'
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/
Una variante más:
du -h --max-dep=1
Aquí hay un script POSIX que funcionará con:
ls -A -R -g -o "[email protected]" | awk '{n1 += $3} END {print n1}'
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).
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
.