2009-07-21 06:54:48 +0000 2009-07-21 06:54:48 +0000
134
134

Utilidad de Linux para encontrar los archivos/directorios más grandes

Estoy buscando un programa que me muestre qué archivos/directorios ocupan más espacio, algo así como

74% music
 \- 60% music1
 \- 14% music2
12% code
13% other

Sé que es posible en KDE3, pero prefiero no hacer eso: prefiero KDE4 o la línea de comandos.

Respuestas (16)

200
200
200
2010-07-07 15:31:29 +0000

Yo siempre uso ncdu. Es interactivo y muy rápido.

131
131
131
2012-03-06 19:56:10 +0000

Para encontrar los 10 archivos más grandes (linux/bash):

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

Para encontrar los 10 directorios más grandes:

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

La única diferencia es -type {d:f}.

Maneja archivos con espacios en los nombres, y produce tamaños de archivos legibles en la salida. El archivo más grande aparece en último lugar. El argumento para tail es el número de resultados que se ven (aquí los 10 más grandes).

Hay dos técnicas utilizadas para manejar los espacios en los nombres de los archivos. El find -print0 | xargs -0 utiliza delimitadores nulos en lugar de espacios, y el segundo xargs -I{} utiliza nuevas líneas en lugar de espacios para terminar los elementos de entrada.

ejemplo:

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

  76M ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz
  76M ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz
  76M ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz
  76M ./tmp/projects/onthisday/onthisday.tar.gz
  114M ./Dropbox/snapshots/weekly.tgz
  114M ./Dropbox/snapshots/daily.tgz
  114M ./Dropbox/snapshots/monthly.tgz
  117M ./Calibre Library/Robert Martin/cc.mobi
  159M ./.local/share/Trash/files/funky chicken.mpg
  346M ./Downloads/The Walking Dead S02E02 ... (dutch subs nl).avi
37
37
37
2009-07-21 07:19:02 +0000

Para una vista rápida:

du | sort -n

lista todos los directorios con la última más grande.

du --max-depth=1 * | sort -n

o, de nuevo, evitando el redundante * :

du --max-depth=1 | sort -n

lista todos los directorios del directorio actual con el mayor en último lugar.

(el parámetro -n para ordenar es necesario para que el primer campo se ordene como un número en lugar de como un texto, pero esto excluye el uso del parámetro -h de du, ya que necesitamos un número significativo para la ordenación)

Hay otros parámetros disponibles para du si desea seguir enlaces simbólicos (por defecto no se siguen los enlaces simbólicos) o simplemente mostrar el tamaño del contenido del directorio excluyendo los subdirectorios, por ejemplo. du puede incluso incluir en la lista la fecha y la hora de la última modificación de cualquier archivo del directorio.

23
23
23
2009-07-24 04:26:50 +0000

Para la mayoría de las cosas, prefiero las herramientas CLI, pero para el uso de la unidad, me gusta mucho filelight . La presentación es más intuitiva para mí que cualquier otra herramienta de gestión del espacio que he visto.

20
20
20
2013-02-18 04:35:03 +0000

Filelight es mejor para los usuarios de KDE, pero para completar (el título de la pregunta es general) debo mencionar que Baobab está incluido en Ubuntu, alias Disk Usage Analyzer:

8
8
8
2009-07-22 10:00:12 +0000

Una herramienta GUI, * KDirStat **, muestra los datos tanto en forma de tabla como gráficamente. Puedes ver rápidamente dónde se utiliza la mayor parte del espacio.

No estoy seguro de si esta es exactamente la herramienta de KDE que no querías, pero creo que aún así debería ser mencionada en una pregunta como esta. Es buena y es probable que mucha gente no la conozca - yo mismo me enteré hace poco.

5
5
5
2009-07-21 07:06:07 +0000

Una combinación es siempre el mejor truco en Unix.

du -sk $(find . -type d) | sort -n -k 1

Mostrará los tamaños de los directorios en KB y los ordenará para dar el más grande al final.
Tree-view sin embargo necesita algo más de fu… ¿es realmente necesario?

Tenga en cuenta que este escaneo está anidado a través de directorios por lo que contará los subdirectorios de nuevo para los directorios superiores y el directorio base . se mostrará al final como la suma total de utilización.

Sin embargo, puede utilizar un control de profundidad en el find para buscar a una profundidad específica.
Y, involucrarse mucho más con su búsqueda en realidad… dependiendo de lo que quiera. El control de profundidad de find con -maxdepth y -mindepth puede restringir a una profundidad específica de sub-directorio.

  • *

Aquí hay una variación refinada para su problema de arg-demasiado-largo

find . -type d -exec du -sk {} \; | sort -n -k 1
3
3
3
2009-07-21 11:35:45 +0000

Me gusta gt5 . Puedes navegar por el árbol y abrir subdirectorios para profundizar en los detalles. Utiliza un navegador web en modo texto, como lynx, para mostrar los resultados. Instale elinks para obtener los mejores resultados.

2
2
2
2009-07-21 07:00:04 +0000

Aunque no te da una salida anidada como esa, prueba con du

du -h /path/to/dir/

Ejecutando eso en mi carpeta de Documentos sale lo siguiente:

josh-hunts-macbook:Documents joshhunt$ du -h
  0B ./Adobe Scripts
  0B ./Colloquy Transcripts
 23M ./Electronic Arts/The Sims 3/Custom Music
  0B ./Electronic Arts/The Sims 3/InstalledWorlds
364K ./Electronic Arts/The Sims 3/Library
 77M ./Electronic Arts/The Sims 3/Recorded Videos
101M ./Electronic Arts/The Sims 3/Saves
 40M ./Electronic Arts/The Sims 3/Screenshots
1.6M ./Electronic Arts/The Sims 3/Thumbnails
387M ./Electronic Arts/The Sims 3
387M ./Electronic Arts
984K ./English Advanced/Documents
1.8M ./English Advanced
  0B ./English Extension/Documents
212K ./English Extension
100K ./English Tutoring
5.6M ./IPT/Multimedia Assessment Task
720K ./IPT/Transaction Processing Systems
8.6M ./IPT
1.5M ./Job
432K ./Legal Studies/Crime
8.0K ./Legal Studies/Documents
144K ./Legal Studies/Family/PDFs
692K ./Legal Studies/Family
1.1M ./Legal Studies
380K ./Maths/Assessment Task 1
388K ./Maths
[...]

Luego puedes ordenar la salida pasándola por sort

du /path/to/dir | sort -n
1
1
1
2013-05-15 21:52:25 +0000

Aunque encontrar el porcentaje de uso del disco de cada archivo/directorio es beneficioso, la mayoría de las veces conocer los archivos/directorios más grandes dentro del disco es suficiente.

Así que mi favorito es este:

# du -a | sort -n -r | head -n 20

Y la salida es así

28626644 .
28052128 ./www
28044812 ./www/vhosts
28017860 ./www/vhosts/example.com
23317776 ./www/vhosts/example.com/httpdocs
23295012 ./www/vhosts/example.com/httpdocs/myfolder
23271868 ./www/vhosts/example.com/httpdocs/myfolder/temp
11619576 ./www/vhosts/example.com/httpdocs/myfolder/temp/main
11590700 ./www/vhosts/example.com/httpdocs/myfolder/temp/main/user
11564748 ./www/vhosts/example.com/httpdocs/myfolder/temp/others
4699852 ./www/vhosts/example.com/stats
4479728 ./www/vhosts/example.com/stats/logs
4437900 ./www/vhosts/example.com/stats/logs/access_log.processed
401848 ./lib
323432 ./lib/mysql
246828 ./lib/mysql/mydatabase
215680 ./www/vhosts/example.com/stats/webstat
182364 ./www/vhosts/example.com/httpdocs/tmp/aaa.sql
181304 ./www/vhosts/example.com/httpdocs/tmp/bbb.sql
181144 ./www/vhosts/example.com/httpdocs/tmp/ccc.sql
1
1
1
2012-09-06 05:27:20 +0000

Aquí está el script que lo hace por usted automáticamente. ¡ http://www.thegeekscope.com/linux-script-to-find-largest-files/

La siguiente es la muestra de salida del script:

**# sh get_largest_files.sh / 5**

[SIZE (BYTES)] [% OF DISK] [OWNER] [LAST MODIFIED ON] [FILE] 

56421808 0% root 2012-08-02 14:58:51 /usr/lib/locale/locale-archive
32464076 0% root 2008-09-18 18:06:28 /usr/lib/libgcj.so.7rh.0.0
29147136 0% root 2012-08-02 15:17:40 /var/lib/rpm/Packages
20278904 0% root 2008-12-09 13:57:01 /usr/lib/xulrunner-1.9/libxul.so
16001944 0% root 2012-08-02 15:02:36 /etc/selinux/targeted/modules/active/base.linked

Total disk size: 23792652288 Bytes
Total size occupied by these files: 154313868 Bytes [0% of Total Disc Space]

***Note: 0% represents less than 1%***

Puede que este script le resulte muy práctico y útil !

1
1
1
2014-05-29 03:39:47 +0000

Para encontrar los 25 mejores archivos en el directorio actual y sus subdirectorios:

find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25

La salida de los 25 primeros archivos se hará ordenando en base al tamaño de los mismos mediante el comando piped “sort -nr -k5”.

1
1
1
2015-04-10 12:07:49 +0000

Otra alternativa es agedu que desglosa el espacio en disco según la hora de último acceso, lo que facilita la localización de los archivos que desperdician espacio.

Funciona incluso en un servidor sin X Windows sirviendo páginas web temporales para poder analizar el uso de forma remota, con gráficos. Suponiendo que la dirección IP del servidor es 192.168.1.101, puede escribir esto en la línea de comandos del servidor

agedu -s / -w --address 192.168.1.101:60870 --auth basic -R

Esto imprime el nombre de usuario, la contraseña y la URL con la que puede acceder a la “GUI” y navegar por los resultados. Cuando haya terminado, termine agedu con Ctrl+D en el servidor.

0
0
0
2010-07-07 11:05:40 +0000
du -chs /*

Le mostrará una lista del directorio raíz.

0
0
0
2013-08-18 12:36:57 +0000

Para completar la lista un poco más, añado mi analizador de uso de disco favorito, que es xdiskusage .

La interfaz gráfica de usuario me recuerda a otras utilidades de los buenos tiempos de X, es rápida y no está hinchada, pero sin embargo se puede navegar fácilmente en la jerarquía y tiene algunas opciones de visualización:

$ xdiskusage /usr

0
0
0
2015-03-05 13:44:05 +0000

Pruebe el siguiente comando (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 para el ser humano:

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

El segundo comando para que funcione en OSX/BSD correctamente (ya que sort no tiene -h), necesita instalar sort desde coreutils.

Así que 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'