¿Cómo encontrar los principales directorios o archivos que consumen espacio?


11

Mi disco se está quedando sin espacio:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

Me gustaría revisar todo el directorio de inicio y encontrar los 10 directorios o archivos que consumen más espacio, para decidir a quién eliminar.

du -sh *puede ver el tamaño de todos los subdirectorios, pero solo obtiene la carpeta actual. Podría necesitar dividirme en muchos subdirectores respectivamente y recursivamente para saber quiénes son los culpables que necesito.

¿Existe una forma correcta de hacer esto?

Respuestas:


5

Si puedes usar una GUI, prueba Baobab . Esta es una herramienta gráfica para analizar el uso de espacio en el disco duro.


10

ncdu es una opción de línea de comando que escanea directorios y enumera el uso del disco de mayor a menor. Es mi herramienta de búsqueda para esto.

Todavía tendrá que sumergirse recursivamente de esta manera, pero es una manera fácil y agradable de hacerlo.


9

Usa este comando:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Le mostrará el tipo de gráfico en línea de comando que muestra los directorios que consumen la mayor parte del espacio en porcentaje.

Si desea analizar el /homeúnico, puede especificar esto en el comando de esta manera:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Se verá así: ingrese la descripción de la imagen aquí

Tomado de aquí .


9

du | sort -rn | cabeza

  • du = uso del disco
  • ordenar usando orden numérico, revertir
  • las diez primeras líneas

4

+1 para Baobab. en la línea de comandos, generalmente solo uso du -hcsx *o du -hcsx * | sort -h(necesita una versión reciente fallida de sort) y luego reviso los subdirectorios a medida que avanzo .

Además, mctiene una buena función de calcular tamaños de subdirectorio presionando Ctrl+ Spaceencima (presione Ctrl+ Spaceencima ..para hacer que calcule el tamaño de todos los subdirectorios. Luego puede seleccionar ordenar por tamaño en el menú.


2
en la línea de comando, deberías probar ncdu. Es un maldito du, básicamente.
Rob

1

Prueba esto:

du -a /dir | sort -nr | cut -f2 | xargs du -sh | head -n 10

0

Otro favorito de la GUI: kdirstat

Tiene buenas capacidades de desglose y un menú de herramientas (extensible) para ayudarlo a eliminar / comprimir sus archivos.

También tengo un script de línea de comando que llamo dir_usage que he subido a pastebin.


-1
find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

La línea de comando anterior hace lo siguiente (en orden):

  • Encuentra todos los archivos (no directorios) dentro de la carpeta actual
  • Mostrar uso para cada uno de ellos
  • Ordenar los resultados numéricamente
  • Use solo las últimas 10 líneas (uso más alto)
  • Recorte los 10 nombres de archivo (la primera columna es el uso, la segunda es el nombre del archivo)
  • Uso de visualización para cada nombre de archivo (en formato humano)

Esto dará como resultado una lista de tamaños legibles por humanos de los 10 archivos más grandes dentro de la carpeta y subcarpetas actuales.


3
¿Puedes ampliar tu respuesta?
50-3
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.