Je n'arrive pas à comprendre pourquoi j'obtiens les résultats suivants:
ls -l
me dit que la taille d'un fichier donné (HISTORY) est "581944":
$ ls -l HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
ls -s
dit que c'est "572":
$ ls -s HISTORY
572 HISTORY
Je dois évidemment faire en sorte que les valeurs utilisent une échelle comparable. Je confirme donc d'abord que l'utilisation de --block-size 1
in ls -l
me donne le même résultat qu'auparavant:
$ ls -l --block-size 1 HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
Ensuite, je fais la même chose pour ls -s
obtenir une valeur de la même échelle:
$ ls -s --block-size 1 HISTORY
585728 HISTORY
Des résultats différents! 581944 ≠ 585728 .
J'ai essayé de générer des valeurs comparables dans l'autre sens, en utilisant -k
, mais je reçois:
$ ls -lk HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 569 Feb 22 10:59 HISTORY
$ ls -sk HISTORY
572 HISTORY
Encore une fois, des résultats différents, 569 572 .
J'ai essayé de spécifier --si pour m'assurer que les deux options utilisaient la même échelle, mais en vain:
$ ls -lk --si HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 582k Feb 22 10:59 HISTORY
$ ls -sk --si HISTORY
586k HISTORY
... encore une fois, différentes valeurs: 582k 6 586k .
J'ai essayé de chercher sur le Web, mais la seule chose qui me semblait pertinente était la suivante :
Certains fichiers comportent des "trous", de sorte que l'utilisation indiquée par
ls -s
(...) est inférieure à la taille du fichier indiqué parls -l
. "
(Notez que dans mes résultats, l'inverse se produit: ls -s
renvoie des tailles plus grandes que ls -l
, pas plus petites.)
En attendant, cette page dit que
il n'y a pas de moyen élégant de détecter les trous de fichiers Unix.
Alors, comment puis-je traiter cette différence? Laquelle de ces valeurs peut être considérée comme correcte? Est-ce que cela pourrait être un bug ls
?
ls -s
compte pas ça?