La forma más fácil parece ser find /path/to/search -ls | wc -l
Buscar se usa para recorrer todos los archivos y carpetas.
-ls
para enumerar (imprimir) todos los nombres. Este es un valor predeterminado y si lo deja fuera, seguirá funcionando igual en casi todos los sistemas. (Casi, ya que algunos pueden tener valores predeterminados diferentes). Sin embargo, es una buena costumbre usar esto explícitamente.
Si solo usa la find /path/to/search -ls
parte, imprimirá todos los archivos y directorios en su pantalla.
wc
es el recuento de palabras la -l
opción le dice que cuente el número de líneas.
Puede usarlo de varias maneras, p. Ej.
- wc testfile
- archivo de prueba de gato | baño
La primera opción le permite a wc abrir un archivo y contar el número de líneas, palabras y caracteres en ese archivo. La segunda opción hace lo mismo pero sin nombre de archivo se lee desde stdin.
Puedes combinar comandos con una tubería |
. La salida del primer comando se canalizará a la entrada del segundo comando. Por lo tanto, find /path/to/search -ls | wc -l
utiliza find para enumerar todos los archivos y directorios y alimenta la salida a wc. Wc luego cuenta el número de líneas.
(Otra alternativa habría sido 'ls | wc', pero find es mucho más flexible y una buena herramienta para aprender).
[Editar después del comentario]
Puede ser útil combinar el find y el exec.
Por ejemplo find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
, enumerará todos los directorios en /, excluirá algunos que no desea buscar. Podemos activar el comando anterior en cada uno de ellos, produciendo una suma de archivos por carpeta en /.
Sin embargo:
- Esto usa la extensión específica de GNU -maxdepth.
Funcionará en Linux, pero no en cualquier unix-a-like.
- Sospecho que es posible que desee un número de archivos para cada subdirectorio.