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.
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
Siempre uso ncdu
. Es interactivo y muy rápido.
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.
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 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:
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.
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.
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
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
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
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!
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.
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".
du -chs /*
Le mostrará una lista del directorio raíz.
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 instalarsort
desdecoreutils
.
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'
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