ls -l
vám dá zdánlivou velikost souboru, což je počet bajtů, které by program přečetl, kdyby soubor četl od začátku do konce. du
by vám poskytla velikost souboru "na disku".
Ve výchozím nastavení du
udává velikost souboru v počtu diskových bloků, ale můžete použít -h
získat místo toho jednotku čitelnou pro člověka. Viz také manuál pro du
ve vašem systému.
Všimněte si, že s du
GNU coreutil (což je pravděpodobně to, co máte na Linuxu), -b
získat bajty znamená --apparent-size
volba. Toto není to, co chcete použít k získání počtu bajtů skutečně použitých na disku. Místo toho použijte --block-size=1
nebo -B 1
.
S GNU ls
, můžete také provést ls -s --block-size=1
na souboru. Získáte stejné číslo jako du -B 1
pro soubor.
Příklad:
$ ls -l file
-rw-r--r-- 1 myself wheel 536870912 Apr 8 11:44 file
$ ls -lh file
-rw-r--r-- 1 myself wheel 512M Apr 8 11:44 file
$ du -h file
24K file
$ du -B 1 file
24576 file
$ ls -s --block-size=1 file
24576 file
To znamená, že se jedná o soubor o velikosti 512 MB, který na disku zabere přibližně 24 KB. Je to řídké soubor (většinou nuly, které nejsou ve skutečnosti zapsány na disk, ale jsou reprezentovány jako logické "díry" v souboru). Řídké soubory jsou běžné při práci s předem přidělenými velkými soubory, např. obrazy disků pro virtuální počítače nebo odkládací soubory atd. Vytvoření řídkého souboru je rychlé, zatímco jeho vyplnění nulami je pomalé (a zbytečné).
Viz také manuál pro fallocate
na vašem systému Linux.
Dostanu velikost souboru v bajtech takto:
actualsize=$(du -b "${file}" | cut -f 1)