Jak mogę znaleźć liczbę plików w systemie plików?


26

Chcę wiedzieć, ile plików mam w moim systemie plików. Wiem, że mogę zrobić coś takiego:

find / -type f | wc -l

To wydaje się wysoce nieefektywne. Chciałbym naprawdę znaleźć całkowitą liczbę unikalnych i-węzłów, które są uważane za „plik”.

Czy jest lepszy sposób?

Uwaga:

Chciałbym to zrobić, ponieważ opracowuję program do synchronizacji plików i chciałbym przeprowadzić analizę statystyczną (na przykład liczbę plików, które ma przeciętny użytkownik w porównaniu do liczby plików w systemie). Nie muszę jednak nic wiedzieć o tych plikach, tylko że one istnieją (ścieżki nie mają żadnego znaczenia). Chciałbym szczególnie poznać te informacje dla każdego zamontowanego systemu plików (i powiązanego z nim punktu montowania).

Odpowiedzi:


34

Opcja --inodes dfinformuje, ile i-węzłów jest zarezerwowanych do użycia. Na przykład:

$ df --inodes / /home
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            3981312  641704 3339608   17% /
/dev/sda8            30588928  332207 30256721    2% /home
$ sudo find / -xdev -print | wc -l
642070
$ sudo find /home -print | wc -l
332158
$ sudo find /home -type f -print | wc -l
284204

Zauważ, że liczba zwróconych wpisów findjest większa niż IUseddla systemu plików root (/), ale jest mniejsza dla / home. Ale oba są w granicach 0,0005%. Przyczyną rozbieżności są twarde linki i podobne sytuacje.

Pamiętaj, że katalogi, dowiązania symboliczne, gniazda domeny UNIX i nazwane potoki są „plikami”, ponieważ odnoszą się do systemu plików. Używanie find -type fflagi jest więc bardzo niedokładne z statystycznego punktu widzenia.


Myślę, że tego właśnie szukam. Czy jest jakiś sposób, aby dowiedzieć się, ile jest każdego typu pliku? Nie jest to bezpośrednio potrzebne mojej aplikacji, ale może być przydatną wiedzą.
beatgammit

1
Nie bez kontroli i-węzłów każdego pliku w systemie plików, co byłoby mniej więcej tak samo, jak wyszukiwanie.
Arcege

Czy df rozumie większość systemów plików (ext2-4, ntfs, fat, reiserfs itp.)?
beatgammit

Rozumie każdy typ systemu plików, który można zamontować. Niektóre typy systemów plików nie mają i-węzłów (na przykład gruby); dfwyświetli całkowitą liczbę i-węzłów jako 0 w tych systemach plików. Inne typy powinny pokazywać statystyki i-węzłów systemu plików.
Arcege

Czy musiałbyś przekierowywać błędy, aby /dev/nullzobaczyć, jak otrzymasz linie ostrzegające, że pliki /procsą „wirtualne”?
n0pe

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.