Je ne comprends pas 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 amener les valeurs à une échelle comparable. Donc d'abord je confirme qu'en utilisant --block-size 1
dans ls -l
j'obtiens le même résultat qu'avant :
$ ls -l --block-size 1 HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
Ensuite, je fais de même pour ls -s
pour obtenir une valeur sur la même échelle :
$ ls -s --block-size 1 HISTORY
585728 HISTORY
Résultats différents ! 581944 != 585728.
J'ai essayé de générer des valeurs comparables dans l'autre sens, en utilisant -k
, mais j'obtiens :
$ 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, 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, des valeurs différentes : 582k != 586k.
J'ai cherché sur le web mais la seule chose que j'ai trouvée qui semblait pertinente était ceci :
Certains fichiers ont des "trous", de sorte que l'utilisation indiquée par
ls -s
(...) est inférieure à la taille du fichier indiquée parls -l
."
(remarquez que dans mes résultats le contraire se produit : ls -s
renvoie des tailles plus grandes que ls -l
, pas plus petites.)
Pendant ce temps, 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 gérer cette discrepancy ? Quelle de ces valeurs peut être considérée comme correcte ? Est-ce possiblement un bug dans ls
?