Digamos que quiero obtener el tamaño de cada directorio de un sistema de archivos Linux. Cuando yo uso ls -la
Realmente no consigo el tamaño resumido de las carpetas.
Si yo uso df
Obtengo el tamaño de cada sistema de archivos montado, pero eso tampoco me ayuda. Y con du
Obtengo el tamaño de cada subdirectorio y el resumen de todo el sistema de archivos.
Pero quiero tener solo el tamaño resumido de cada directorio dentro de la carpeta ROOT del sistema de archivos. ¿Hay algún comando para lograr eso?
--total
La bandera me ayudó. P.ej.du -sh --total applications/*
. askubuntu.com/a/465436/48214Respuestas:
Esto hace lo que buscas:
Lo que esto significa:
-s
para dar sólo el total de cada argumento de línea de comando.-h
para los sufijos legibles por humanos comoM
para megabytes yG
para gigabytes (opcional)./*
simplemente se expande a todos los directorios (y archivos) en/
.Nota: los archivos de puntos no están incluidos; correr
shopt -s dotglob
para incluir esos también.También es útil la clasificación por tamaño:
Aquí:
-h
asegura quesort
interpreta los sufijos legibles por humanos correctamente.fuente
shopt -s dotglob
Incluirlos en el conde./*
, p.ej../
para el directorio actual o./*
para cada elemento en el directorio actual../*/
para obtener solo subcarpetas y no todos los elementosdu -sh /* | sort -h
sort
no tiene-h
, necesitas dejarlo fuera dedu
también, de lo contrario la clasificación mezclará kilo / mega / gigabytes.du -s /* | sort -nr
.A menudo necesito encontrar los directorios más grandes, así que para obtener una lista ordenada que contiene los 20 directorios más grandes, hago esto:
En este caso los tamaños serán reportados en megabytes.
fuente
Me gusta usar Ncdu para eso, puede usar el cursor para navegar y profundizar a través de la estructura de directorios que funciona realmente bien.
fuente
b
para caer en un shell en el directorio.Las respuestas existentes son muy útiles, tal vez a algunos principiantes (como yo) también les resulte útil.
Bucle muy básico, pero para mí fue un buen comienzo para otras operaciones relacionadas con el tamaño:
Muy similar a la primera respuesta y casi el mismo resultado que 1.), pero me tomó algo de tiempo entender la diferencia de * a ./* si en un subdirectorio:
fuente
El seguimiento
du
La invocación debería funcionar en sistemas BSD:fuente
du
(Ubuntu 10.4) no tiene un-d
opción. ¿En qué sistema estás?du -sk /*
. Odio el-k
cosas tan mucho Linux-h
totalmente rocas--max-depth
Esto no es facil los
du
el comando muestra archivos y carpetas (predeterminado) o solo los tamaños de todos los elementos que especifique en la línea de comandos (opción-s
).Para obtener los elementos más grandes (archivos y carpetas), ordenados, con tamaños legibles por humanos en Linux:
Esto te enterrará en una tonelada de pequeños archivos. Puedes deshacerte de ellos con
--threshold
(1 MB en mi ejemplo):La ventaja de este comando es que incluye carpetas de puntos ocultos (carpetas que comienzan con
.
).Si realmente solo quieres las carpetas, necesitas usar
find
pero esto puede ser muy, muy lento ya quedu
Habrá que escanear muchas carpetas varias veces:fuente
Ten en cuenta que no puedes comparar directorios con
du
En diferentes sistemas / máquinas sin estar seguros, ambos comparten el mismo tamaño de bloque del sistema de archivos. Esto puede contar si rsync algunos archivos de una máquina Linux a un nas y desea comparar el directorio sincronizado por su cuenta. Puede obtener diferentes resultados condu
debido a los diferentes tamaños de bloques ....fuente
También es posible que desee revisar xdiskusage . Le dará la misma información, pero se muestra gráficamente, y permite profundizar (muy útil). Hay otras utilidades similares para KDE e incluso Windows.
fuente
Usted podría usar
ls
en conjunto conawk
:La salida de
ls
se canaliza aawk
.awk
comienza a procesar los datos. El delimitador estándar es el espacio. La variable de sumatot
se inicializa a cero; la siguiente declaración se ejecuta para cada fila / línea producida porls
. Simplemente incrementatot
con el tamaño.$5
representa la quinta columna (producida porls
). Al final dividimos por (1024 * 1024) para sumar en megabytes.Si desea convertir esto en un script o función (.bashrc), también puede usarlo para obtener el tamaño de ciertos subconjuntos de directorios, de acuerdo con los tipos de archivo.
Si quieres información de todo el sistema,
kdirstat
puede ser útil!fuente