Як я можу знайти кількість файлів у файловій системі?


26

Хочу знати, скільки файлів у моїй файловій системі. Я знаю, що можу зробити щось подібне:

find / -type f | wc -l

Це здається дуже неефективним. Що мені дуже хотілося б зробити, це знайти загальну кількість унікальних утворень, які вважаються "файлом".

Чи є кращий спосіб?

Примітка:

Я б хотів це зробити, тому що я розробляю програму синхронізації файлів, і я хотів би зробити якийсь статистичний аналіз (наприклад, скільки файлів у середнього користувача в цілому та скільки файлів у системі). Мені не потрібно нічого знати про ці файли, лише про те, що вони існують (шляхи зовсім не мають значення). Я особливо хотів би знати цю інформацію для кожної змонтованої файлової системи (і пов'язаної з нею точки монтажу).

Відповіді:


34

Параметр --inodes dfпідкаже, скільки вправ зарезервовано для використання. Наприклад:

$ 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

Зауважте, що кількість повернених записів findбільша, ніж IUsedдля кореневої (/) файлової системи, але менша для / home. Але обидва знаходяться в межах 0,0005%. Причиною розбіжностей є жорсткі зв’язки та подібні ситуації.

Пам'ятайте, що каталоги, символьні посилання, розетки домену UNIX та іменовані канали - це "файли", як це стосується файлової системи. Тож використання find -type fпрапора є дико неточним, з точки зору статистики.


Я думаю, що це те, що я шукаю. Чи є спосіб дізнатися, скільки існує кожного з типів файлів? Це не потрібно безпосередньо моїй програмі, але може бути корисним знанням.
beatgammit

1
Не обійшлося без огляду вкладок кожного файлу у файловій системі, що було б приблизно так само, як і пошук.
Арседж

Чи розуміє df більшість файлових систем (ext2-4, ntfs, fat, reiserfs тощо)?
beatgammit

Він би розумів будь-який тип файлової системи, який можна було б встановити. Деякі типи файлової системи не мають входів (наприклад, жир); dfвідобразила б загальну кількість вводів як 0 у цих файлових системах. Інші типи повинні відображати основні статистичні дані про inode файлової системи.
Арседж

Чи доведеться вам переспрямовувати помилки, щоб /dev/nullпобачити, як ви отримаєте рядки з попередженням про те, що файли в /proc"віртуальному"?
n0pe

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.