Buscando una serie de comandos que me muestren los archivos más grandes en una unidad.
Buscando una serie de comandos que me muestren los archivos más grandes en una unidad.
Respuestas:
Si solo necesita encontrar archivos grandes, puede usar find
con la -size
opción. El siguiente comando enumerará todos los archivos de más de 10MiB (que no deben confundirse con 10MB ):
find / -size +10M -ls
Si desea buscar archivos con un tamaño determinado, puede combinarlo con una búsqueda de "tamaño inferior a". El siguiente comando busca archivos entre 10MiB y 12MiB:
find / -size +10M -size -12M -ls
apt-cache search 'disk usage'
enumera algunos programas disponibles para el análisis del uso del disco. Una aplicación que parece muy prometedora es gt5
.
De la descripción del paquete:
Han pasado años y los discos se han vuelto cada vez más grandes, pero incluso en esta era de disco duro increíblemente enorme, el espacio parece desaparecer con el tiempo. Este pequeño y efectivo programa proporciona una lista más conveniente que el du (1) predeterminado. Muestra lo que ha sucedido desde la última ejecución y muestra el tamaño del directorio y el porcentaje total. Es posible navegar y ascender a directorios utilizando teclas de cursor con navegador basado en texto (enlaces, enlaces, lince, etc.)
En la sección "paquetes relacionados" de gt5 , encontré ncdu
. De su descripción del paquete:
Ncdu es un du viewer basado en ncurses. Proporciona una interfaz rápida y fácil de usar a través de la famosa utilidad du. Permite navegar por los directorios y mostrar porcentajes de uso del disco con la biblioteca ncurses.
-ls
salida está codificado (consulte las funciones de código fuente pred_fls
y list_file ). Puede intentar aproximar la salida utilizando la -printf
opción, procesar la salida con awk o usar algo comofind ... -type f -exec ls -ldh {} \; | column -t
Solo uso una combinación de du
y sort
.
sudo du -sx /* 2>/dev/null | sort -n
0 /cdrom
0 /initrd.img
0 /lib64
0 /proc
0 /sys
0 /vmlinuz
4 /lost+found
4 /mnt
4 /nonexistent
4 /selinux
8 /export
36 /media
56 /scratchbox
200 /srv
804 /dev
4884 /root
8052 /bin
8600 /tmp
9136 /sbin
11888 /lib32
23100 /etc
66480 /boot
501072 /web
514516 /lib
984492 /opt
3503984 /var
7956192 /usr
74235656 /home
Luego se trata de enjuagar y repetir . Apunte a los subdirectorios que considere demasiado grandes, ejecute el comando para ellos y descubra qué está causando el problema.
Nota: Utilizo du
la -x
bandera de '' para mantener las cosas limitadas a un sistema de archivos (tengo una disposición bastante complicada de cosas de montaje cruzado entre SSD y RAID5).
Nota 2: 2>/dev/null
redirige cualquier mensaje de error al olvido. Si no te molestan, no es obligatorio.
du
página de manual: "Resuma el uso del disco de cada ARCHIVO, de forma recursiva para los directorios".
Mi solución favorita utiliza una mezcla de varias de estas buenas respuestas.
du -aBM 2>/dev/null | sort -nr | head -n 50 | more
du
argumentos:
-a
para "todos" los archivos y directorios. Déjalo solo para directorios-BM
para generar los tamaños en megabytes (M) tamaños de bloque (B)2>/dev/null
- excluir mensajes de error de "permiso denegado" (gracias @Oli)sort
argumentos:
-n
para "numérico"-r
para "reversa" (mayor a menor)head
argumentos:
-n 50
para los mejores 50 resultados.more
si usa un número más pequeñoNota: Prefijo sudo
para incluir directorios a los que su cuenta no tiene permiso de acceso.
Ejemplo que muestra los 10 archivos y directorios más grandes en / var (incluido el total general).
cd /var
sudo du -aBM 2>/dev/null | sort -nr | head -n 10
7555M .
6794M ./lib
5902M ./lib/mysql
3987M ./lib/mysql/my_database_dir
1825M ./lib/mysql/my_database_dir/a_big_table.ibd
997M ./lib/mysql/my_database_dir/another_big_table.ibd
657M ./log
629M ./log/apache2
587M ./log/apache2/ssl_access.log
273M ./cache
Para mostrar los directorios más grandes del top 20 (recursivamente) en la carpeta actual, use el siguiente one-liner:
du -ah . | sort -rh | head -20
o (más orientado a Unix):
du -a . | sort -rn | head -20
Para los 20 archivos más grandes del directorio actual (recursivamente):
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
Tenga en cuenta que solo
-h
está disponible para GNUsort
, por lo que para que funcione correctamente en OSX / BSD, debe instalarlo desdecoreutils
. Luego agregue su carpeta a suPATH
.
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'
La respuesta de qbi es correcta, pero será muy lenta cuando haya muchos archivos, ya que comenzará un nuevo proceso ls para cada elemento.
una versión mucho más rápida que usa find sin generar procesos secundarios sería usar printf para imprimir el tamaño en bytes (% s) y la ruta (% p)
find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries
Esta parece ser la aplicación perfecta para find
:
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
Este comando encontrará todos los archivos en el directorio $DIRECTORY
y los ejecutará ls -s
. El último comando imprime el tamaño asignado de un archivo más el nombre del archivo. El resultado se ordena numéricamente y se muestran las últimas cinco entradas. Por lo tanto, verá los 5 archivos más grandes $DIRETORY
o cualquier subdirectorio. Si ingresa tail -n 1
, verá solo el archivo más grande.
Además puedes jugar mucho con find
. Por ejemplo, puede buscar archivos que tengan menos de n días ( -ctime -n
) o que pertenezcan a usuarios especiales ( -user johndoe
).
Cuando necesito hacer más espacio libre en los servidores, uso este comando. Encuentra todos los archivos más grandes que 50 MB y "du -h" hace una mejor lista de archivos y "sort -n" después de la lista de tuberías, ordenada numéricamente por tamaño de archivo.
find / -size +50M -type f -exec du -h {} \; | sort -n
Pruebe Baobab, le brinda una descripción gráfica de los archivos y carpetas, puede ver dónde están los cerdos del espacio real y eliminarlos con un clic https://help.ubuntu.com/community/Baobab
También puede ordenar los archivos por tamaño:
find . -type f -exec du -h {} \; | sort -k1 -h
Encuentra solo archivos y se ejecuta du -h
para cada archivo, que muestra el tamaño del archivo. Por último, clasificamos la salida de find
/ de du
acuerdo con la primera columna (en formato legible para humanos).
El último archivo impreso es el más grande.
Puedes usar el comando para ver los archivos más grandes mientras saltas los directorios:
sudo find / -type f -printf “%s\t%p\n” | sort -n | tail -1
find $HOME -type f -printf ‘%s %p\n’ | sort -nr | head -10
Para encontrar todos los archivos que son más grandes que 100MiB (esto no es 100MB, vea aquí si está confundido):
find / -size +100M -ls
El siguiente comando mostrará los 5 archivos más grandes de la carpeta $DIRECTORY
:
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
USO du
: El siguiente comando que usa du, muestra los directorios con los 20 tamaños más grandes en la carpeta de trabajo de inicio:
sudo du -a /home | sort -n -r | head -n 20
Ahora para mostrar los directorios / archivos más grandes, incluidas las subcarpetas, ejecute:
du -Sh | sort -rh | head -n 10
Utilizando ls
:
Para enumerar los 5 archivos más grandes en el directorio / bin, emita el siguiente comando:
ls -lSh /bin | head -5
También puede usar el Analizador de uso de disco o Baobao como se muestra aquí, por ejemplo.
Una herramienta excelente y fácil de usar a la que se hace referencia en la respuesta a una pregunta similar es la NCurses Disk Usage
herramienta:
sudo ncdu /