Nie mogę zrozumieć, dlaczego otrzymuję następujące wyniki:
ls -l mówi mi, że rozmiar danego pliku (HISTORIA) to „581944”:
$ ls -l HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
ls -s mówi, że jest to „572”:
$ ls -s HISTORY
572 HISTORY
Oczywiście muszę zastosować wartości w porównywalnej skali. Najpierw potwierdzam, że użycie --block-size 1in ls -ldaje taki sam wynik jak poprzednio:
$ ls -l --block-size 1 HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
Następnie robię to samo, aby ls -suzyskać wartość w tej samej skali:
$ ls -s --block-size 1 HISTORY
585728 HISTORY
Różne wyniki! 581944 585728 .
Próbowałem wygenerować porównywalne wartości na odwrót, używając -k, ale otrzymuję:
$ ls -lk HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 569 Feb 22 10:59 HISTORY
$ ls -sk HISTORY
572 HISTORY
Ponownie różne wyniki, 569 ≠ 572 .
Próbowałem podać --si, aby upewnić się, że obie opcje używają tej samej skali, ale bezskutecznie:
$ ls -lk --si HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 582k Feb 22 10:59 HISTORY
$ ls -sk --si HISTORY
586k HISTORY
... znowu, różne wartości: 582 tys . ≠ 586 tys .
Próbowałem przeszukać sieć, ale jedyne, co wydawało mi się istotne, to :
Niektóre pliki mają „dziury”, więc użycie wymienione przez
ls -s(...) jest mniejsze niż rozmiar pliku wymienione przezls -l. ”
(zauważ, że w moich wynikach dzieje się odwrotnie: ls -szwraca rozmiary większe niż ls -l, nie mniejsze).
Tymczasem ta strona to mówi
nie ma eleganckiego sposobu na wykrycie dziur w plikach uniksowych.
Jak więc poradzić sobie z tą rozbieżnością? Które z tych wartości można uznać za prawidłowe? Czy to może być błąd ls?
ls -sliczy?