¿Cómo encontrar los directorios más grandes o los archivos más grandes? [duplicar]

33

Esta pregunta ya tiene una respuesta aquí:

En Linux, estoy buscando un comando para enumerar el archivo más grande y / o los directorios más grandes en un directorio.

Eric V
fuente
La herramienta más útil que he encontrado es xdiskusage ( xdiskusage.sourceforge.net ) Esto muestra gráficamente dónde están los archivos, por tamaño. Gran herramienta! (y funciona directamente con X11)
jcoppens
¿Cómo se duplica esto de alguna pregunta que se ha cerrado como fuera de tema? No tiene sentido
kenorb

Respuestas:

17

De cualquier directorio:

du -a | sort -n -r

Brent Worden
fuente
1
esto muestra archivos individuales, pero la pregunta también se trata de directorios
ver
du sin argumentos resume el uso del disco por los directorios. du with -a produce la misma información de directorio e incluye el uso del disco para archivos individuales también.
Brent Worden
no se puede ejecutar ordenar cuando estás fuera del espacio: = (
Jonathan Henson
28

El siguiente comando le muestra un nivel de directorios y sus tamaños

du --max-depth = 1 / ruta | ordenar -r -k1,1n

Si uno de ellos realmente sobresale (el último en la lista es el más grande debido a sort -r), entonces vuelve a ejecutar el comando en ese directorio y luego continúa hasta encontrar el directorio / archivo ofensivo.

Si todo lo que quieres son los diez archivos más grandes, simplemente

find / home -type f -exec du -s {} \; El | ordenar -r -k1,1n | cabeza

Marcin
fuente
el mayor número termina en la parte inferior para mí, no importa si agrego sort -ro no. ¿Hay alguna manera de obtener el mayor número en la parte superior?
squarecandy
Debe indicar para ordenar por qué columna desea ordenar, y que es numérico (no alfanumérico). Eso es lo que haría -k1,1rn. De manera predeterminada, sort usa ordenación alfanumérica en la primera columna.
Marcin
Sí, se está ordenando correctamente con eso, pero está en orden ascendente de números bajos a altos sin importar si incluyo sorto sort -r. ¿Estoy malinterpretando cómo funciona el -r? Supongo que no es gran cosa. Su ejemplo es muy útil y me dio la información que necesitaba.
squarecandy
2
Con el sortque tengo ( sort (GNU coreutils) 8.13en Ubuntu 12.04.3) la opción -rno funciona si -nsigue inmediatamente -k( -k1,1n). Este orden de las opciones funciona: sort -rnk1,1.
pabouk
27

Una utilidad llamada ncdule dará la información que está buscando.

sudo apt-get install ncdu

En OS X, se puede instalar usando Homebrew:

brew install ncdu
David Pratt
fuente
2
+1 Nunca había oído hablar de este antes, funcionó muy bien en Mac también.
Andrew E
Esta es una solución mucho mejor que las dos respuestas más altas.
AlexLordThorsen
Esto es alucinante. ¡Sugiéralo sobre todas las otras respuestas!
Allen Gingrich
4

du -sk * | sort -nr | cabeza -1

Esto mostrará el directorio / archivo más grande en un directorio en KB. Cambiar el valor del encabezado dará como resultado los x archivos / directorios superiores.

Sridharpp
fuente
2

Esta publicación te ayudará bien:

cd /path/to/some/where
du -a /var | sort -n -r | head -n 10
du -hsx * | sort -rh | head -10
Matz
fuente
2

El siguiente comando devolverá los 10 archivos principales más grandes /path

du -a -h / ruta | ordenar -h -r | cabeza -n 10

Me gusta usar -hopciones de legibilidad. Ambos duy sortnecesito tener -h.

Jiang
fuente
1

Utilizar

ls -A | xargs -I artifact du -ms artifact | sort -nr

Opcionalmente, puede agregar una tubería y usar head -5

Abhishek
fuente
0

Use du. Pruebe esto para ordenar el resultado:

du | sort -n
Heisenbug
fuente
0

Pruebe el siguiente one-liner (muestra los 20 archivos más grandes en el directorio actual):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

o con tamaños legibles por humanos:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

El segundo comando para trabajar en OSX / BSD correctamente (como sortno tiene -h), debe instalar sortdesde coreutils.

Por lo tanto, estos alias son útiles para tener en sus archivos rc (cada vez que lo necesite):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
kenorb
fuente
-5
du -sh /path * | sort -nr | grep G

G para archivos / directorios GIG (para eliminar pequeños)

conejera
fuente
Esto enumera todos los archivos y carpetas, mostrando el tamaño. No clasifica el tamaño por el valor de K, M o G de bytes, a menos que lo aumente como se muestra
Canadian Luke REINSTATE MONICA
También encontrará cualquier cosa con un Gen el nombre del archivo.
Kevin Panko