Contar el total de ficheros y/o directorios que hay dentro de una estructura de directorios desde la línea de comandos, a veces no es sencillo para las personas que están empezando con la línea de comandos de GNU/Linux.
Seguid leyendo y os enseñaré a buscar ficheros y directorios de forma rápida y sencilla en GNU/Linux...
¿QUÉ ES LA HERRAMIENTA FIND?
La herramienta 'find' en GNU/Linux es una utilidad de línea de comandos que se utiliza para buscar archivos y directorios en un sistema de archivos. Proporciona una forma flexible y potente de realizar búsquedas basadas en una variedad de criterios, como el nombre del archivo, el tamaño, la fecha de modificación, los permisos y otros atributos.
Find es la mejor herramienta para buscar ficheros y directorios en GNU/Linux
1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL
- Un PC con cualquier distribución de GNU/Linux
2.- ESTRUCTURA DE EJEMPLO
A modo de ejemplo, he creado la siguiente estructura de directorios y ficheros. Hay directorios, subdirectorios y ficheros en el directorio raíz y dentro de algunos subdirectorios:
[raul@sid count]$ find
.
./dir1
./dir1/file1.txt
./dir2
./dir2/file1.txt
./dir2/file2.txt
./dir3
./dir3/file1.txt
./dir3/file2.txt
./dir3/file3.txt
./dir4
./dir4/file1.txt
./dir4/file2.txt
./dir4/file3.txt
./dir4/file4.txt
./dir5
./dir5/file1.txt
./dir5/file2.txt
./dir5/file3.txt
./dir5/file4.txt
./dir5/file5.txt
./dir5/dir51
./dir5/dir52
./dir5/dir53
./file1.txt
./file2.txt
./file3.txt
3.- CONTAR FICHEROS EN UN DIRECTORIO
Para listar los ficheros que hay dentro de un directorio, de forma no recursiva, limitaremos el comando find -con maxdepth- al directorio actual y filtrando por los ficheros de tipo "file" con la opción de -type:
[debian@sid count]$ find . -maxdepth 1 -type f
./file1.txt
./file2.txt
./file3.txt
Para contar los ficheros, tan solo debemos añadir al final el comando "wc -l" de la siguiente forma:
[debian@sid count]$ find . -maxdepth 1 -type f | wc -l
3
4.- CONTAR DIRECTORIOS EN UN DIRECTORIO
Para listar los directorios que hay dentro de un directorio, de forma no recursiva, limitaremos el comando find -con maxdepth- al directorio actual y filtrando por los ficheros de tipo "directory" con la opción de -type y excluyendo el directorio actual que se nombra como ".":
[raul@sid count]$ find . -maxdepth 1 -type d -not -path "."
./dir1
./dir2
./dir3
./dir4
./dir5
Para contar los directorios, tan solo debemos añadir al final el comando "wc -l" de la siguiente forma:
[raul@sid count]$ find . -maxdepth 1 -type d -not -path "." | wc -l
5
Para listar los ficheros que hay dentro de un directorio, de forma recursiva, filtraremos por los ficheros de tipo "file" con la opción de -type:
[raul@sid count]$ find . -type f
./dir1/file1.txt
./dir2/file1.txt
./dir2/file2.txt
./dir3/file1.txt
./dir3/file2.txt
./dir3/file3.txt
./dir4/file1.txt
./dir4/file2.txt
./dir4/file3.txt
./dir4/file4.txt
./dir5/file1.txt
./dir5/file2.txt
./dir5/file3.txt
./dir5/file4.txt
./dir5/file5.txt
./file1.txt
./file2.txt
./file3.txt
Para contar los ficheros, tan solo debemos añadir al final el comando "wc -l" de la siguiente forma:
[raul@sid count]$ find . -type f | wc -l
18
Para listar los directorios que hay dentro de un directorio, de forma recursiva, filtraremos por los directorios de tipo "directory" con la opción de -type y excluyendo el directorio actual que se nombra como ".":
[raul@sid count]$ find . -type d -not -path "."
./dir1
./dir2
./dir3
./dir4
./dir5
./dir5/dir51
./dir5/dir52
./dir5/dir53
Para contar los directorios, tan solo debemos añadir al final el comando "wc -l" de la siguiente forma:
[raul@sid count]$ find . -type d -not -path "." | wc -l
8
ENJOY!