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


134

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

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

Sé que es posible en KDE3, pero prefiero no hacerlo; se prefieren KDE4 o la línea de comandos.


para usuarios de mac, solo quiero recomendar este software gratuito llamado Disk Inventory X. descárguelo aquí derlien.com es fácil de usar para mac osx
Nimitack

Respuestas:


131

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 archivo legibles por humanos en la salida. El archivo más grande aparece en último lugar. El argumento para seguir es el número de resultados que ve (aquí los 10 más grandes).

Hay dos técnicas utilizadas para manejar espacios en los nombres de archivo. Los find -print0 | xargs -0usos null delimitadores en lugar de espacios, y la segunda xargs -I{}utiliza saltos de línea en lugar de espacios para poner fin a 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

El archivo más grande aparece primero : find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}(es decir, usar en sort -nr | head -10lugar de sort -n | tail -10)
Sandra Rossi

200

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


Sí y es pequeño!
Luke Stanley

55
Amo ncdu Es uno de mis hallazgos de google favoritos.
Rob

55
Guau. ¿Cómo no sabía que esto existía? ¡Gracias!
pixel

22
+1000 para ncdu--- es como htoppara espacio en disco. Super útil!
Noah Sussman

ya que no parece que haya banderas ni una opción .config, aquí está la secuencia de teclas es probable que escribir cada vez que se ejecuta si te gusta archivos y carpetas se mezclaban y viendo las estadísticas porcentuales relativos: [t] [g] [g].
rymo

37

Para una vista rápida:

du | sort -n

enumera todos los directorios con el último más grande.

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

o, nuevamente, evitando el redundante *:

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

enumera todos los directorios en el directorio actual con el último más grande.

(-n parámetro para ordenar es necesario para que el primer campo se ordene como un número en lugar de como texto, pero esto impide usar el parámetro -h para 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 (el valor predeterminado es no seguir enlaces simbólicos) o simplemente mostrar el tamaño del contenido del directorio, excluyendo subdirectorios, por ejemplo. Incluso puede incluir en la lista la fecha y hora en que se modificó por última vez cualquier archivo del directorio.


3
Es el * realmente necesario. ¿No incluye por defecto todos los archivos en el directorio actual?
Josh Hunt el

No, el * debe ser redundante. No estoy seguro de si usarlo es señal de un buen hábito o uno malo. Gracias por mencionarlo. Modifiqué la respuesta para reflejarla como opcional.
mas

Esto está bien, pero los resultados no son muy amigables. Por lo general me vuelvo a esto:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
escritura 02392

romano # du --max-depth = 1 | sort -n du: opción ilegal - - uso: du [-A] [-H | -L | -P] [-a | -s | -d profundidad] [-c] [-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I mask] [archivo ...]
holms

du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0- un poco más ordenado
Stuart Cardall

23

Para la mayoría de las cosas, prefiero las herramientas CLI, pero para el uso de la unidad, realmente me gusta la luz de archivo . La presentación es más intuitiva para mí que cualquier otra herramienta de administración de espacio que haya visto.

Captura de pantalla de Filelight


1
Filelight es mi herramienta de poda de cerdo espacial de elección.
Ryan Thompson

Muy buena aplicación. +1
rpax

Visualmente, es artísticamente intrigante, pero intuitivo. Solo de mirarlo, no tengo idea de lo que representa. ¿Alguien puede explicarlo? Fui al sitio y no vi ninguna explicación.
G-Man

Una herramienta similar en Mac es DaisyDisk, disponible en daisydiskapp.com
computingfreak

20

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, también conocido como Disk Usage Analyzer:

ingrese la descripción de la imagen aquí


Si está buscando un equivalente de esto en la plataforma Mac, consulte DaisyDisk.
computingfreak

8

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

ingrese la descripción de la imagen aquí

No estoy seguro de si esta es exactamente la herramienta de KDE que no quería, pero creo que aún debería mencionarse en una pregunta como esta. Es bueno y muchas personas probablemente no lo saben, solo lo aprendí recientemente.


Gracias por la respuesta. Es exactamente la misma herramienta que tenía en KDE3, pero me mudé a KDE 4.
Robert Munteanu

¿Estás seguro de que no puedes obtener kdirstat para KDE4?
Jonik

44
Kdirstat es muuuy lento. Usar en su ncdulugar.
Daenyth

Acabo de presionar ctrl + f para encontrar ncdu, y vi que ya había votado a @Daenyth
Rob

En KDE, simplemente se llama k4dirstat .
phihag

5

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

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

Mostrará los tamaños de directorio en KB y los ordenará para dar el más grande al final.
Sin embargo, la vista de árbol necesitará un poco más de fu ... ¿es realmente necesario?

Tenga en cuenta que esta exploración está anidada en todos los directorios, por lo que contará nuevamente los subdirectorios para los directorios superiores y el directorio base .aparecerá al final como la suma total de utilización.

Sin embargo, puede usar un control de profundidad en el hallazgo para buscar a una profundidad específica.
Y, en realidad, participe mucho más con su escaneo ... dependiendo de lo que desee. Control de profundidad de findcon -maxdepthy -mindepthpuede restringir a una profundidad sub-directorio específico.


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

find . -type d -exec du -sk {} \; |  sort -n -k 1

Intenté eso y obtuve muchos 'du: Tarea: No existe tal archivo o directorio'
Josh Hunt

Gracias por la respuesta. Desafortunadamente me sale bash: / usr / bin / du: Lista de argumentos demasiado larga
Robert Munteanu

3

Me gusta GT5 . Puede navegar por el árbol y abrir subdirectorios para profundizar para obtener más detalles. Utiliza un navegador web en modo de texto, como lynx, para mostrar los resultados. Instale enlaces para obtener mejores resultados.

texto alternativo


2

Aunque no le da un resultado anidado como ese, intente du

du -h /path/to/dir/

Ejecutar eso en mi carpeta Documentos escupe 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 puede ordenar la salida canalizándola a sort

du /path/to/dir | sort -n

Gracias, pero no muestra correctamente qué directorios son más grandes. Si lo inicio en mi directorio de inicio, la salida no se puede usar.
Robert Munteanu

1

Aquí está el script que lo hace por usted automáticamente.

http://www.thegeekscope.com/linux-script-to-find-largest-files/

A continuación se muestra el resultado de muestra 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 encontrar este script muy útil y útil!


2
Si bien el sitio web vinculado da instrucciones, es preferible que parafrasees y luego hagas referencia al sitio externo (que de todos modos parece un blog personal). Esto evitará la pudrición de enlaces y ayudará a más personas en este sitio
Canadian Luke

1
Enlace roto?
Danijel

1

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

Entonces 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

Para buscar los 25 archivos principales en el directorio actual y sus subdirectorios:

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

La salida de los 25 archivos principales se ordenará según el tamaño de los archivos mediante el comando canalizado "sort -nr -k5".


1

Otra alternativa es agedu, que descompone el espacio en disco por último tiempo de acceso, lo que facilita la localización de archivos que desperdician espacio.

Incluso funciona en un servidor sin X Windows al servir páginas web temporales para que el uso se pueda analizar 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 comando 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 explorar los resultados. Cuando termine, termine ageducon Ctrl+Den el servidor.


0
du -chs /*

Le mostrará una lista del directorio raíz.


0

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

La GUI me recuerda de otras buenas utilidades antiguas, es rápida y no está hinchada, pero de todos modos puede navegar fácilmente en la jerarquía y tener algunas opciones de visualización:

$ xdiskusage /usr

ingrese la descripción de la imagen aquí


0

Pruebe el siguiente one-liner (muestra los 20 archivos más grandes del 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'
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.