Domyślnie du
zlicza każdy plik tylko raz, jeśli jest połączony wiele razy. Jeśli uruchomisz du -L bar
, policzy plik, ponieważ osiągnie go tylko raz. Jeśli jednak uruchomisz program du -L *
, policzy go tylko za pierwszym razem, gdy go zobaczy. Na przykład:
$ du -L foo bar
16K foo
4.0K bar
$ du -L bar foo
16K bar
4.0K foo
Zauważ, że zamiana kolejności argumentów zmienia folder, który zostanie zgłoszony jako 16 KB.
Możesz wymusić du
liczenie pliku dwa razy, przekazując -l
parametr.
Edytować:
Dowiązania symboliczne są specjalnym rodzajem pliku i potrzebny jest dodatkowy krok, aby podążać za dowiązaniem. du
nie będzie podążał za dowiązaniami symbolicznymi, chyba że -L
opcja jest włączona.
Z drugiej strony, twardy link to w zasadzie jeden plik istniejący w dwóch (lub więcej) folderach. du
prawdopodobnie śledzi, które pliki widział według numeru i-węzła, aby uniknąć ich dwukrotnego liczenia. -l
wyłącza to zachowanie.
Więc po prostu -L
będzie podążał za dowiązaniem symbolicznym, ale jeśli plik docelowy ma numer i-węzła, to już widział, że nie zostanie ponownie zliczony. Wystarczy, -l
że policzy duplikaty twardych linków, ale nie będzie podążać za symbolicznymi linkami.
Jeśli użyjesz -l
i -L
razem, będzie on podążał za dowiązaniami symbolicznymi, a także pozwoli policzyć pliki docelowe więcej niż jeden raz.
du
chce grać tutaj sprytnie, ale jeśli uruchomisz,df -a -L bar foo
wyjście jest bardzo złe (liczenie 16K w takcie pozostawia foo puste).