¿Cómo puedo encontrar la cantidad de archivos en un sistema de archivos?

26

Quiero saber cuántos archivos tengo en mi sistema de archivos. Sé que puedo hacer algo como esto:

find / -type f | wc -l

Esto parece altamente ineficiente. Lo que realmente me gustaría hacer es encontrar el número total de inodos únicos que se consideran un 'archivo'.

¿Hay una mejor manera?

Nota:

Me gustaría hacer esto porque estoy desarrollando un programa de sincronización de archivos, y me gustaría hacer un análisis estadístico (como cuántos archivos tiene el usuario promedio en total frente a cuántos archivos hay en el sistema). Sin embargo, no necesito saber nada sobre esos archivos, solo que existen (las rutas no importan en absoluto). Me gustaría saber especialmente esta información para cada sistema de archivos montado (y su punto de montaje asociado).

beatgammit
fuente

Respuestas:

34

La opción --inodes dfle dirá cuántos inodos están reservados para su uso. Por ejemplo:

$ 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

Observe que la cantidad de entradas devueltas findes mayor que IUsedpara el sistema de archivos raíz (/), pero es menor para / home. Pero ambos están dentro del 0.0005%. La razón de las discrepancias se debe a los enlaces duros y situaciones similares.

Recuerde que los directorios, enlaces simbólicos, sockets de dominio UNIX y canalizaciones con nombre son todos 'archivos' en lo que se refiere al sistema de archivos. Por lo tanto, usar find -type fflag es muy inexacto, desde un punto de vista estadístico.

Arcege
fuente
Creo que esto es lo que estoy buscando. ¿Hay alguna forma de averiguar cuántos de cada tipo de archivo hay? Mi aplicación no lo necesita directamente, pero podría ser un conocimiento útil.
beatgammit
1
No sin inspeccionar los inodos de cada archivo en el sistema de archivos, que sería casi lo mismo que hacer la búsqueda.
Arcege
¿Df entiende la mayoría de los sistemas de archivos (ext2-4, ntfs, fat, reiserfs, etc.)?
beatgammit
Entendería cualquier tipo de sistema de archivos que pudiera montarse. Algunos tipos de sistemas de archivos no tienen inodes (por ejemplo, fat); dfmostraría el número total de inodes como 0 en esos sistemas de archivos. Otros tipos deben mostrar las estadísticas de inodo del sistema de archivos subyacente.
Arcege
¿Tendría que redirigir los errores para /dev/nullver que obtendría líneas que le advierten que los archivos /procson "virtuales"?
26/11/11