¿Cómo enumerar tamaños de archivos recursivos de archivos y directorios en un directorio?

50

¿Cómo enumero todos los archivos en un directorio y sus tamaños de archivo recursivos?

---editar

Quiero ver los tamaños 'enrollados' en los directorios principales en el directorio listado. No quiero ver los directorios secundarios o sus contenidos o tamaños.

ojo de halcón
fuente
1
¿Quiere decir que desea ver el tamaño total (suma) de todos los archivos en una carpeta, como hacer clic derecho en una carpeta en su escritorio y seleccionar 'propiedades'?
Pavlos G.
¿Está buscando un software que lo ayude a encontrar archivos grandes o algo para obtener un árbol de archivos (plegable)?
Lekensteyn
Hola @Pavlos G: me refiero a la suma de cada uno de los directorios en el directorio en el que estoy actualmente, no a la suma del directorio general.
Ojo de halcón
@JG - Comprueba mi actualización ;-)
Pavlos G.

Respuestas:

53

Supongo que la forma más fácil es escribiendo ls -l, o ls -lhque proporcionará el tamaño del archivo en formato legible (KB, MB, etc.).

Si 'recursivamente' significa enumerar todas las carpetas posteriores, por ejemplo:

/ foo /
/ foo / bar / ....

Entonces también debe agregar parámetros R, como ls -lRols -lhR

Se lspuede encontrar más información escribiendoman ls

Actualizar:

El siguiente comando como propuso Lekensteyn probablemente hará el trabajo:

du -h --max-depth=1 <folder>

-hes para lectura humana
--apparent-sizees otra forma de mostrar tamaños, como ya se indicó,
--max-depthes el nivel de subcarpetas al que desea bajar.

Pavlos G.
fuente
¿Qué usar para una profundidad máxima? -1?
dylanh724
61
apt-get install ncdu

ingrese la descripción de la imagen aquí

También es interactivo, por lo que si desea verificar una subcarpeta solo ARRIBA, ABAJO e Ingresar a ella.

ihashacks
fuente
Justo lo que estaba buscando. ¡Muchas gracias!
Mathlight
Tal vez la recomendación de software más sorprendente que he recibido
SomethingSomething
esta debería ser la respuesta aprobada
dvdmn
30

Para obtener el tamaño total de un directorio y todos los elementos secundarios

du -hs directory/*
Richard Holloway
fuente
Me gustaría pasar al siguiente nivel: los tamaños recursivos de todos los niños de primer nivel.
Ojo de halcón
1
Editaré mi respuesta. Debe usar el directorio du -h / *
Richard Holloway
17

También echa un vistazo tree. No está instalado por defecto, pero son los repositorios.

Ejemplo:

richard@legend:~$ tree Applications/ -s
Applications/
├── [           4096]  AlexFTPS-1.0.2
│   ├── [      31232]  AlexPilotti.FTPS.Client.dll
│   ├── [     274432]  C5.dll
│   ├── [       1457]  C5-License
│   ├── [      35147]  COPYING
│   ├── [       7639]  COPYING.LESSER
│   ├── [         70]  ftps
│   ├── [      28672]  ftps.exe
│   ├── [      98304]  Plossum CommandLine.dll
│   ├── [       1557]  Plossum-License
│   └── [       2560]  README
└── [           4096]  src
    └── [     180849]  AlexFTPS_bin_1.0.2.zip

Se pueden encontrar más opciones en la página del manual.

Richard Holloway
fuente
¿Se deben mostrar los tamaños?
Ojo de halcón
JG: El -s muestra los tamaños.
Richard Holloway
1
Muestra el tamaño del registro del directorio en lugar del tamaño completo del directorio.
Steven Lu
-hmostrar tamaño en forma legible para humanos, por ejemplotree -s
Eric Wang
15

Dado que no menciona específicamente que necesita una solución basada en terminal, creo que el baobab aka Disk Usage Analyzer falta en la lista.

Está instalado en Ubuntu de forma predeterminada y hace exactamente lo que desea en una interfaz gráfica de usuario agradable con la capacidad de profundizar en la jerarquía de directorios.

Además de mostrar una lista de directorios con sus tamaños, también muestra un anillo o una tabla de mapa de árbol del uso del sistema de archivos, lo cual es extremadamente útil para visualizar los directorios que ocupan más espacio.

baobab el analizador de uso de disco

Sergey
fuente
7

Una solución terminal es el ducomando:

du --all --human-readable --apparent-size

(abreviatura: du -ah --apparent-size)

dumuestra el uso del disco para cada archivo y directorio. Las opciones explicadas:

  • --all, -a- también muestra tamaños para archivos, no solo directorios
  • --human-readable, -h- muestra tamaños en un formato legible para humanos, por ejemplo 10K(10 kilobytes), 10(10 bytes)
  • --apparent-size - muestra el tamaño real del archivo, no los tamaños utilizados por el disco.
Lekensteyn
fuente
Sólo quería a los niños de primer nivel
Hawkeye
2
@hawkeye para el primer nivel que puedes usar--max-depth=1
nikoskip
44
@nikoskip buen consejo! También es bueno saber que la taquigrafía --max-depth=1se puede acortar -d1.
Lekensteyn
cómo conseguir todo esto en un orden decending de tamaño ..
Krazzy R
¿Cómo puedo ver el contenido y vacío: / dev / sda5 ext4 430G 381G 27G 94% / mi portátil es menos de 1 mes de edad y es tan completa que no tiene sentido
Krazzy R
2

Esto parece hacer el truco cuando los enlaces simbólicos están involucrados.

ls -LRlh
Mulki
fuente
la respuesta dada no me dio detalles para los enlaces sim (ls -lhR), los números que figuran al lado tampoco correspondían con el tamaño correcto de cada uno de los valores. Mi respuesta me dio una jerarquía con una estructura de árbol definida y la respuesta correcta ... ¿O te refieres a alguna otra respuesta votada?
Mulki
Voto negativo retraído, votado a favor. Por favor, editar y poner el comentario en la respuesta ... Gracias por la explicación. ;-)
Fabby
1

Para obtener una lista ordenada, coloque todo en MB y ordene:

du -m * | sort -n

O utilice herramientas como DiskReport para generar un informe del árbol de disco completo.

Erwan
fuente
1

Otra solución de terminal con findy ordenar (por tamaño de archivo, columna 1)

$ find . -maxdepth 1 ! -path . -printf "%s %p\n" | sort -n -k1                              
178 ./somefile.txt
219 ./somefile2.txt
4096 ./c
4096 ./cs2
4096 ./perl
4096 ./python
4096 ./random
4096 ./sh
Sergiy Kolodyazhnyy
fuente
Esto no muestra el tamaño del directorio.
muru