No puedo entender por qué obtengo los siguientes resultados:
ls -l
me dice que el tamaño de un archivo dado (HISTORIA) es "581944":
$ ls -l HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
ls -s
dice que es "572":
$ ls -s HISTORY
572 HISTORY
Obviamente necesito hacer que los valores utilicen una escala comparable. Así que primero confirmo que usar --block-size 1
in ls -l
me da el mismo resultado que antes:
$ ls -l --block-size 1 HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
Luego hago lo mismo para ls -s
obtener un valor en la misma escala:
$ ls -s --block-size 1 HISTORY
585728 HISTORY
Diferentes resultados! 581944 ≠ 585728 .
Intenté generar valores comparables al revés, usando -k
, pero obtengo:
$ ls -lk HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 569 Feb 22 10:59 HISTORY
$ ls -sk HISTORY
572 HISTORY
De nuevo, diferentes resultados, 569 ≠ 572 .
Traté de especificar --si para asegurarme de que ambas opciones usaban la misma escala, sin éxito:
$ ls -lk --si HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 582k Feb 22 10:59 HISTORY
$ ls -sk --si HISTORY
586k HISTORY
... de nuevo, diferentes valores: 582k ≠ 586k .
Intenté buscar en la web, pero lo único que pude encontrar que parecía relevante fue esto :
Algunos archivos tienen "agujeros" en ellos, de modo que el uso indicado por
ls -s
(...) es menor que el tamaño de archivo indicado porls -l
".
(tenga en cuenta que en mis resultados sucede lo contrario: ls -s
devuelve tamaños más grandes que ls -l
, no más pequeños).
Mientras tanto, esta página dice que
No hay una manera elegante de detectar agujeros de archivos Unix.
Entonces, ¿cómo puedo lidiar con esta discrepancia? ¿Cuál de estos valores puede considerarse correcto? ¿Podría ser esto un error ls
?
ls -s
cuenta eso?