GNU/Linux >> Tutoriales Linux >  >> Linux

Forma rápida de contar archivos recursivamente en Linux

Solución 1:

Si tiene esto en un sistema de archivos dedicado, o tiene una sobrecarga constante de archivos, puede obtener un recuento aproximado de la cantidad de archivos observando la cantidad de inodos en el sistema de archivos a través de " df-i":

[email protected]:~# df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            60489728   75885 60413843    1% /

En mi caja de prueba de arriba tengo 75,885 inodos asignados. Sin embargo, estos inodos no son solo archivos, también son directorios. Por ejemplo:

[email protected]:~# mkdir /tmp/foo
[email protected]:~# df -i /tmp 
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            60489728   75886 60413842    1% /
[email protected]:~# touch /tmp/bar
[email protected]:~# df -i /tmp
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            60489728   75887 60413841    1% /

NOTA:No todos los sistemas de archivos mantienen los recuentos de inodos de la misma manera. ext2/3/4 funcionará, sin embargo, btrfs siempre informa 0.

Si tiene que diferenciar los archivos de los directorios, tendrá que recorrer el sistema de archivos y "estadificar" cada uno para ver si es un archivo, directorio, enlace simbólico, etc. El mayor problema aquí no es la canalización de todo el texto a "wc", pero buscando entre todos los inodos y entradas de directorio para juntar esos datos.

Aparte de la tabla de inodos como se muestra en "df -i", realmente no hay una base de datos de cuántos archivos hay en un directorio determinado. Sin embargo, si esta información es importante para usted, puede crear y mantener dicha base de datos haciendo que sus programas incrementen un número cuando crean un archivo en este directorio y lo disminuyan cuando lo eliminen. Si no controla los programas que los crean, esta no es una opción.

Solución 2:

Escribí un programa de conteo de archivos personalizado para esta pregunta de StackOverflow:https://stackoverflow.com/questions/1427032/fast-linux-file-count-for-a-large-number-of-files

Puede encontrar el repositorio de GitHub aquí si desea navegar, descargar o contribuir:https://github.com/ChristopherSchultz/fast-file-count

Solución 3:

Si desea contar recursivamente la cantidad de archivos en un directorio, ubique El comando es el más rápido que conozco, supuse que tiene una base de datos actualizada (base de datos de actualización de Sudo ... hecha de manera predeterminada a través del trabajo cron todos los días). Sin embargo, puede acelerar el comando si evita el grep tubo.

Ver hombre localizar :

-c, --count
       Instead  of  writing  file  names on standard output, write the number of 
       matching entries only.

Entonces el comando más rápido es:

locate -c -r '/path/to/dir'

Linux
  1. Conteo recursivo de archivos en un directorio de Linux

  2. ¿Cómo transferir archivos entre Linux y Android de forma rápida y fiable?

  3. ¿Hay alguna manera de hacer que los sistemas de archivos ext usen menos espacio para ellos mismos en Linux?

  4. ¿Puedo aumentar el número de inodos en Linux?

  5. Forma más rápida de eliminar una gran cantidad de archivos

Cómo copiar una gran cantidad de archivos en Linux

La forma más rápida de contar archivos recursivamente en Linux

Cómo listar archivos recursivamente en Linux

Cómo contar archivos en el directorio en Linux

Contar el número de archivos en un directorio en Linux

Cómo contar el número de archivos en un directorio en Linux