GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es el comando más confiable para encontrar el tamaño real de un archivo de Linux?

No hay ningún problema de inexactitud o confiabilidad aquí, solo está comparando dos números diferentes:tamaño lógico versus tamaño físico.

Aquí está la ilustración de Wikipedia para archivos dispersos:

ls muestra las áreas gris+verde, la longitud lógica del archivo. du (sin --apparent-size ) muestra solo las áreas verdes, ya que esas son las que ocupan espacio.

Puede crear un archivo disperso con dd count=0 bs=1M seek=100 of=myfile .

ls muestra 100MiB porque esa es la longitud del archivo:

$ ls -lh myfile
-rw-r----- 1 me me 100M Jul 15 10:57 myfile

du muestra 0, porque esa es la cantidad de datos que se asignan:

$ du myfile
0 myfile

ls -l --block-size=M

le dará una lista de formato largo (necesaria para ver realmente el tamaño del archivo) y redondeará los tamaños de archivo al MiB más cercano .

Si quieres MB (10^6 bytes) en lugar de MiB (2^20 bytes) unidades, use --block-size=MB en su lugar.

Si no quieres el M sufijo adjunto al tamaño del archivo, puede usar algo como --block-size=1M . Gracias Stéphane Chazelas por sugerir esto.

Esto se describe en la página man para ls; man ls y busca SIZE . Permite unidades que no sean MB/MiB también, y por lo que parece (no lo intenté) tamaños de bloque arbitrarios también (para que pueda ver el tamaño del archivo como un número de bloques de 412 bytes, si lo desea).

Tenga en cuenta que el --block-size el parámetro es una extensión GNU sobre el ls del Open Group , por lo que es posible que esto no funcione si no tiene un espacio de usuario de GNU (que es lo que tienen la mayoría de las instalaciones de Linux). El ls de GNU coreutils 8.5 admite --block-size como se describe arriba.


Hay varias nociones de tamaño de archivo, como se explica en la respuesta de ese otro guiy y la figura de wikipage en archivos dispersos.

Sin embargo, es posible que desee utilizar los comandos ls(1) y stat(1).

Si codifica en C, considere usar llamadas al sistema stat(2) y lseek(2).

Ver también las referencias en esta respuesta.


Linux
  1. ¿Cuál es el propósito del archivo .bashrc en Linux?

  2. ¿Cuál es el equivalente al comando de archivo de Linux para Windows?

  3. ¿Cuál es el comando de Unix para averiguar qué archivo ejecutable corresponde a un comando determinado?

  4. ¿Qué podría causar que el comando de archivo en Linux informe un archivo de texto como datos binarios?

  5. ¿Para qué sirve Linux test -a command test?

Cómo usar el comando táctil en Linux

Cómo usar el comando de cabeza de Linux

Cómo usar el comando diff de Linux

¿Qué es el comando Watch de Linux + ejemplos?

¿Qué es el comando matar en Linux?

El comando find Directory de Linux:Explicación