it-swarm.dev

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

Estoy buscando un programa para mostrarme 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.

133
Robert Munteanu

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 los archivos con espacios en los nombres y produce tamaños de archivos legibles por el ser humano en la salida. El archivo más grande en la lista al final El argumento a seguir es el número de resultados que ves (aquí los 10 más grandes).

Hay dos técnicas usadas para manejar espacios en nombres de archivos. El find -print0 | xargs -0 usa delimitadores nulos en lugar de espacios, y el segundo xargs -I{} usa 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
130
Sean

Siempre uso ncdu. Es interactivo y muy rápido.

200
Daenyth

Para una vista rápida:

du | sort -n

enumera todos los directorios con los últimos más grandes.

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

o, nuevamente, evitando lo redundante *:

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

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

(Se requiere el parámetro -n para ordenar, de modo que el primer campo se ordene como un número en lugar de como texto, pero esto excluye el uso del parámetro -h porque necesitamos un número significativo para la clasificación)

Hay otros parámetros que están disponibles si desea seguir los enlaces simbólicos (el valor predeterminado es no seguir los enlaces simbólicos) o simplemente mostrar el tamaño del contenido del directorio, excluyendo los subdirectorios, por ejemplo. Incluso puede incluir en la lista la fecha y hora en que se modificó por última vez cualquier archivo en el directorio.

37
mas

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

Filelight screenshot

23
Anton Geraschenko

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

enter image description here

20
Nicolas Raoul

Una herramienta GUI, KDirStat, muestra los datos en forma de tabla y gráficamente. Puedes ver realmente rápido donde se utiliza la mayor parte del espacio.

enter image description here

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 sepan, yo solo lo supe recientemente.

8
Jonik

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 mayor al final.
La vista de árbol, sin embargo, necesitará algo más de fu ... ¿es realmente necesario?

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

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


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

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

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

alt text

3
Dennis Williamson

Aunque no te da una salida anidada como esa, prueba 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 canalizando a sort

du /path/to/dir | sort -n
2
Josh Hunt

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

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
trante

Aquí está el script que lo hace por ti 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!

1
Kam

Otra alternativa es agedu que descompone el espacio en disco por el último acceso, lo que facilita la ubicación de los 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 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 examinar los resultados. Cuando termine, termine agedu con Ctrl+D en el servidor.

1
Bastiaan

Para encontrar 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 a través del comando canalizado "sort -nr -k5".

1
xpros
du -chs /*

Le mostrará una lista del directorio raíz.

0
RusAlex

Intente lo siguiente de una sola línea (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 (ya que sort no tiene -h), debe instalar sort desde coreutils.

Por lo tanto, es útil tener estos alias 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'
0
kenorb

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

La interfaz gráfica de usuario me recuerda algunas otras utilidades de ol, que son rápidas y no están abultadas, pero aún así puede navegar fácilmente en la jerarquía y tener algunas opciones de visualización:

$ xdiskusage /usr

enter image description here

0
mpy