Saber el tamaño de un archivo es fácil en Linux. Todo lo que tiene que hacer es usar la opción -l y -h con el comando ls y le mostrará el tamaño del archivo junto con los permisos del archivo y las marcas de tiempo del archivo. Aquí hay una salida de muestra:
ls -lh tutorials
total 56K
-rwxr--r-- 1 abhishek abhishek 456 Mar 6 16:21 agatha.txt
-rw-r--r-- 1 abhishek abhishek 0 Apr 16 19:53 a.t
-rwxr--r-- 1 abhishek abhishek 140 Mar 22 16:41 bash_script.sh
-rw-rw-r-- 1 abhishek abhishek 95 Feb 11 13:12 cpluplus.cpp
-rw-r--r-- 1 abhishek abhishek 163 Apr 13 15:07 prog.py
-rw-r--r-- 1 abhishek abhishek 19K Mar 18 18:46 services
-rw-r--r-- 1 abhishek abhishek 356 Dec 11 21:35 sherlock.txt
-rwxrw-r-- 1 abhishek abhishek 72 Jan 21 15:44 sleep.sh
drwxr-xr-x 3 abhishek abhishek 4.0K Jan 4 20:10 target
drwxr-xr-x 2 abhishek abhishek 4.0K Apr 16 18:27 test_dir
-rw-rw-r-- 1 abhishek abhishek 55 Mar 11 16:28 text-file.txt
Notarías algo extraño. El comando ls muestra el tamaño de todos los directorios como 4 KB. Eso no puede ser correcto, ¿puede ser? Por supuesto que no.
El tamaño de una carpeta o directorio en Linux se puede encontrar usando el comando du. du aquí representa el uso del disco. Explicaré la lógica detrás del tamaño de 4.0K para los directorios más adelante en este tutorial. Por el momento, concentrémonos en obtener el tamaño del directorio.
Si desea verificar el tamaño del directorio en Linux, puede usar este comando:
du -sh path_to_directory
Esto le dará el tamaño total de dicho directorio en formato legible por humanos, es decir, KB, MB o GB.
Uso del comando du para obtener el tamaño del directorio en Linux
Le mostraré varios ejemplos del comando du que puede usar para verificar el tamaño del directorio y la utilización del disco.
La sintaxis del comando du es bastante simple.
du [option] path_to_file_or_directory
Veamos cómo usar el comando du para obtener la información del tamaño del archivo y directorio en Linux.
Esta es la estructura del directorio "tutoriales" que voy a usar en este tutorial:
tree tutorials
.
├── agatha.txt
├── bash_script.sh
├── cpluplus.cpp
├── prog.py
├── services
├── sherlock.txt
├── sleep.sh
├── target
│ ├── agatha.txt
│ ├── file1.txt
│ └── past
│ ├── file1.txt
│ ├── file2.txt
│ └── source1
│ └── source2
│ └── file1.txt
├── test_dir
│ ├── c.xyz
│ ├── myzip1.zip
│ └── myzip2.zip
└── text-file.txt
5 directories, 16 files
Ahora, si ejecuto el comando du en el directorio "tutoriales", mostrará los tamaños de todos los subdirectorios y luego sumará los tamaños de todos los subdirectorios y los archivos en la parte inferior.
du tutorials
Esta es la salida para el directorio de tutoriales.
8 tutorials/target/past/source1/source2
12 tutorials/target/past/source1
24 tutorials/target/past
36 tutorials/target
12 tutorials/test_dir
100 tutorials
Mostrar el tamaño del disco en formato legible por humanos
Ahora, el problema con la salida anterior del comando du es que no sabe si el 100 es 100 KB, 100 MB o 100 GB. No se preocupe, puede cambiar este comportamiento y mostrar el tamaño del directorio en un formato legible por humanos con la opción -h.
du -h tutorials
Aquí está la salida mucho más fácil de leer ahora:
8.0K tutorials/target/past/source1/source2
12K tutorials/target/past/source1
24K tutorials/target/past
36K tutorials/target
12K tutorials/test_dir
100K tutorials
Puede usar la opción -m para MB y la opción -k para KB en lugar de -h. Pero incluso si el tamaño es inferior a 1 MB, siempre mostrará el tamaño de 1 MB. Es por eso que usar la opción -h siempre es una mejor opción.
Mostrar también los tamaños de los archivos
¿Notó que el directorio de tutoriales tiene varios archivos pero no aparecen en la salida del comando du? Es porque aunque el tamaño del archivo se cuenta en la suma total del tamaño del directorio, los archivos no se muestran de forma predeterminada.
Para mostrar el tamaño de los archivos junto con los directorios, puede usar la opción -a. Sería mejor si lo combina con la opción -h para obtener los tamaños en un formato legible por humanos.
du -ah tutorials
Ahora la salida mostrará los archivos junto con los directorios:
4.0K tutorials/cpluplus.cpp
4.0K tutorials/prog.py
20K tutorials/services
4.0K tutorials/text-file.txt
4.0K tutorials/bash_script.sh
4.0K tutorials/target/file1.txt
4.0K tutorials/target/past/file2.txt
4.0K tutorials/target/past/file1.txt
4.0K tutorials/target/past/source1/source2/file1.txt
8.0K tutorials/target/past/source1/source2
12K tutorials/target/past/source1
24K tutorials/target/past
4.0K tutorials/target/agatha.txt
36K tutorials/target
4.0K tutorials/sherlock.txt
4.0K tutorials/test_dir/myzip1.zip
4.0K tutorials/test_dir/myzip2.zip
0 tutorials/test_dir/c.xyz
12K tutorials/test_dir
4.0K tutorials/sleep.sh
4.0K tutorials/agatha.txt
100K tutorials
Consejo extra:Resolviendo el misterio de 4 KB
Tenga en cuenta que los tamaños pueden parecer que se han redondeado. Quiero decir que todos los tamaños están en múltiplos de 4K. De hecho, aparte de los archivos vacíos, todos los archivos tienen un tamaño mínimo de 4 KB. ¿Es eso una coincidencia? No realmente.
Incluso si el texto del archivo está en bytes, el tamaño mínimo de archivo es 4K porque ese es el tamaño mínimo de bloque del sistema de archivos. Independientemente del tamaño del texto en el archivo, se le asignará al menos un bloque de memoria de 4 KB en el disco.
Y dado que los bloques de memoria tienen un tamaño de 4 KB, los tamaños que verá siempre serán múltiplos de 4 KB.
Ahora, probablemente ya sepa que todo es un archivo en UNIX/Linux. Un directorio es esencialmente un archivo que tiene información sobre la ubicación de todos los archivos que "contiene".
Entonces, cuando usa el comando ls, trata el directorio como un archivo y muestra su tamaño, que es un bloque de memoria y, por lo tanto, el tamaño que se muestra es de 4 KB.
Mostrar solo el tamaño total del directorio en Linux
Si encuentra que la salida del comando du es demasiado detallada y le gustaría ver el tamaño total del directorio en un formato legible por humanos, puede usar la opción de suma -s.
du -sh tutorials
Ahora el resultado será solo una línea que muestra el tamaño total del directorio:
100K tutorials
Mostrar el uso del disco por varios directorios
No es que esté restringido a verificar el tamaño de un solo directorio a la vez. Puede especificar varios directorios en el comando du.
Por ejemplo, voy a usar las opciones -sh para mostrar el tamaño total de dos directorios aquí.
du -sh tutorials/target/ tutorials/test_dir
La salida mostrará el tamaño de ambos directorios individualmente:
36K tutorials/target/
12K tutorials/test_dir
Mostrar el total general de todos los tamaños de directorio
En el ejemplo anterior, vio los tamaños totales de ambos directorios individualmente. Puede usar la opción -c para mostrar un total general de la suma de todos los directorios en la salida.
du -csh tutorials/target/ tutorials/test_dir
Como puede ver en la salida, suma los tamaños y le da el total general:
36K tutorials/target/
12K tutorials/test_dir
48K total
No mostrar los tamaños de los subdirectorios
¿Qué sucede si desea verificar los tamaños de todos los directorios en la carpeta actual? De forma predeterminada, el comando du irá a los subdirectorios de todos los directorios y la salida se vuelve difícil de entender, especialmente si tiene demasiados directorios anidados.
Lo que puede hacer es definir el nivel de profundidad para verificar mientras muestra los tamaños de los subdirectorios.
Entonces, si desea ver los tamaños de los directorios en la carpeta actual, puede establecer la profundidad en 1 de esta manera:
du -h --max-depth=1 tutorials
Ahora la salida mostrará los subdirectorios solo en el directorio actual. No irá más allá de esto.
36K tutorials/target
12K tutorials/test_dir
100K tutorials
Si no puede recordar la profundidad máxima, puede usar su forma abreviada -d flag:
du -h -d1 tutorials
Excluye cierto tipo de archivos al calcular el tamaño del disco
El comando du le da la opción de excluir cierto tipo de archivos. Puede usar regex junto con la opción –exclude.
Por ejemplo, para calcular la suma de todos los archivos excluyendo los archivos con extensión txt, se puede usar este comando:
du -h --exclude="*.txt" tutorials
Y ahora, si ve el resultado, el tamaño total del directorio se habría reducido:
4.0K tutorials/target/past/source1/source2
8.0K tutorials/target/past/source1
12K tutorials/target/past
16K tutorials/target
12K tutorials/test_dir
68K tutorials
Consejo extra:encontrar el subdirectorio más grande
Puede combinar la salida del comando du con el comando sort para clasificar los directorios por orden de tamaño.
du -h --max-depth=1 tutorials | sort -rh
Esto mostrará los directorios en orden inverso a su tamaño, es decir, el directorio más grande en la parte superior.
100K tutorials
36K tutorials/target
12K tutorials/test_dir
Por supuesto, el de arriba es el directorio en sí, pero el segundo te da el subdirectorio más grande.
Puede combinar aún más con el comando principal o el comando final para obtener el archivo x más grande o los archivos/directorios más pequeños.
¿Te resultó útil?
He tratado de explicar todo el uso esencial del comando du en Linux. Pero como siempre, hay muchas más opciones disponibles para el comando que puede encontrar en su página de manual. Si solo desea averiguar el tamaño de un directorio en Linux, este tutorial debería brindarle suficiente información. Si desea verificar el espacio en disco en Linux, use el comando df.
¿Te gustó el tutorial? ¿Te ayudó? Házmelo saber en los comentarios. Si tiene algún otro consejo interesante sobre du command, ¿por qué no lo comparte con nosotros?