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 1in ls -lme 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 -sobtenir 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 -srenvoie 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 -scompte pas ça?