Encontrar lo que está usando todo el espacio en * nix

21

¿Qué secuencia de comandos me dirá qué archivos son los más grandes a partir de un directorio particular, incluidos todos los subdirectorios? Quiero saber a dónde fue todo el espacio.

Preferiblemente solo con comandos unix'y regulares.

Si es posible, intente mantenerlo compatible con Sun OS 5.10 (quizás además de las respuestas regulares de Linux, no como un reemplazo, para mantenerlo lo más general posible).

Alex Budovski
fuente
Hay dos votos para SU y dos para SF. ¿Cuál es más apropiado? Esto podría pertenecer a cualquiera de los dos, en mi opinión.
mmyers
55
@mmyers: se lo dio a SU ... ¡SU necesita preguntas reales!
Shog9
1
¡Pero SU ya tiene una pregunta muy similar! superuser.com/questions/9847/...
Jonik

Respuestas:

11

Personalmente, me gusta usar du -sh *para ver qué tan grande es cada directorio dentro del directorio actual.

También puede ordenar a tener carpetas más grandes en primer lugar: du -shx * | sort -hr. Para du:

  • -s, --summarize: muestra solo un total para cada argumento
  • -h, --human-readable: tamaños de impresión en formato legible para humanos (p. ej., 1K 234M 2G)
  • -x, --one-file-system: omitir directorios en diferentes sistemas de archivos

Para sort:

  • -h, --human-numeric-sort: compare números legibles por humanos (por ejemplo, 2K 1G)
Jorge Israel Peña
fuente
Esto es realmente muy útil con un mod menor: du -s * | sort -nr.
Alex Budovski
55
Puede mantener los tamaños de archivo en formato legible para humanos con du -sh * | sort -hr.
Jorge Israel Peña
du -shx * | sort -hres bueno pero solo devuelve el directorio actual. ¿Cómo haría todo este sistema? ¿Y cómo podría excluir todo por debajo de 100mb? Gracias.
tem
Eso depende de su invocación en el shell. Entonces, eso *es lo que hace que se aplique a todo en el directorio actual, pero podría cambiarlo fácilmente, por ejemplo some/other/path/*, o si solo desea ejecutarlo en un solo directorio como un todo, entonces omita el *patrón global. En cuanto a filtrar las cosas, tal vez haga una pregunta por separado.
Jorge Israel Peña
Para ejecutarlo recursivamente en todo el sistema, puede emparejarlo finden algún directorio raíz y usar su -execparámetro para invocar du. El findprograma en sí mismo probablemente puede filtrar según el tamaño del archivo con algo parecido size +100M. Ver esta pregunta . Tal vez algo así find / -size +100M -exec du -sh {} \; | sort -hr, aunque eso no ha sido probado.
Jorge Israel Peña
13

ncdu

Es simplemente genial: CLI, basado en ncurses, rápido, simple. Instalarlo con sudo apt install ncdu.

ingrese la descripción de la imagen aquí

SEO abierto
fuente
5

básicamente puedes usar el comando du. algo como esto

du -a /home | sort -rn |head -1

mire la página de manual o la información para más opciones.

O bien, puede usar GNU find.

find /home/ -type f -printf "%s:%p\n" | sort -t":" -rn| head -1  
usuario31894
fuente
¿'Find' en Sun OS 5.10 tiene una alternativa que puedo usar para -printf?
Alex Budovski el
Además, ¿hay alguna forma de obtener el primer comando (du ...) para filtrar directorios? Solo estoy realmente interesado en los archivos, como con su segundo comando.
Alex Budovski
5

No es línea de comando pero sigue siendo unix'y: kdirstat

Lo uso para averiguar a dónde se fue todo el espacio y me gusta mucho más que Disk Usage Analyzer (también conocido como Baobab). Es una de las pocas aplicaciones de KDE que se tolera en mi entorno GNOME ;-)

ingrese la descripción de la imagen aquí

Según kdirstat.sourceforge.net, se ejecuta en Solaris.

Si bien KDirStat es un programa de KDE, funciona bien en todos los escritorios X11, es decir, se ejecuta en Linux, BSD y muchos otros sistemas de tipo Unix (Solaris, HP-UX, AIX, ...).

Ludwig Weinzierl
fuente
En ubuntu: k4dirstat y qdirstat. El último más actualizado. No me gusta que permitan eliminar carpetas
develCuy
3
du -a | sort -n

haría el trabajo Usando baobab (es parte de las utilidades de gnome, por lo que probablemente ya esté instalado en su sistema), obtiene un desglose gráfico bastante agradable del espacio utilizado.

balpha
fuente
¿Alguna razón para usar -g en lugar de -n? "Utilice esta opción solo si no hay alternativa; es mucho más lenta que --numeric-sort (-n) y puede perder información al convertir a punto flotante". Gnu.org/software/coreutils/manual/html_node/…
allí
@therefromhere: utilicé la página de manual, que no es tan detallada como el sitio que vinculaste. Acabo de elegir la primera opción que funcionó para el caso particular. Pero usted está en lo correcto; He editado mi respuesta. ¡Gracias!
balpha
3

Analizador de uso de disco

Si está utilizando una distribución basada en Debian / Ubuntu, hay un par de GUI disponibles en los repositorios, que puede encontrar utilizando Synaptic.

ingrese la descripción de la imagen aquí

Hasen
fuente
3
du . -ha | sort -hr
  • -a, --all: escribe recuentos para todos los archivos, no solo directorios
  • -h, --human-readable: tamaños de impresión en formato legible para humanos (p. ej., 1K 234M 2G)
perezoso
fuente
1
Encuentro el hecho de que puedes pronunciar ese comando muy entretenido. Suena gracioso también.
jtbandes
2
-1, esto está mal. El "-h" en el comando du rompe la clasificación.
allí
1
No está mal, simplemente no es portátil. -h es un GNUismo. Use -k en su lugar con Sun OS.
Ludwig Weinzierl
+ Ludwig No creo que hayas entendido. Al agregar -h hace que los números sean legibles por humanos, por lo tanto, ya no son números que pueden ser utilizados por el comando sort. por ejemplo, las cosas se ordenarían así: "760K 784M 788K 860K 944K 985M" Debería ser du -ha | sort -hro du -ha | gsort -hr(en osx después de instalar las utilidades principales)
Gerry
2

Comandante de medianoche

Si desea una salida de lista con buenas opciones de GUI y navegación, instale Midnight Commander ( mcen la mayoría de los administradores de paquetes) y marque "mostrar tamaños de directorio" en el menú de comandos. También puedes Ctrl+ space.

ingrese la descripción de la imagen aquí

Adam Matan
fuente