GNU/Linux >> Tutoriales Linux >  >> Linux

Comprobación del tamaño del directorio con du Command en Linux

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?


Linux
  1. Cómo obtener el tamaño de un directorio en Linux

  2. Comando Linux Tee con ejemplos

  3. Comando JQ en Linux con ejemplos

  4. Los comandos de Linux más simples con 10 ejemplos

  5. Comando de mover directorio de Linux

Comando Echo en Linux con ejemplos

Comando ip de Linux con ejemplos

Comando Du en Linux

15 comandos ps de Linux con ejemplos

Comando de CD de Linux con ejemplos

Comando mv en Linux