Buscar ficheros por su nombre con el comando find
El comando find realiza búsquedas de ficheros y directorios a partir de un determinado punto de búsqueda, es decir, indicaremos un punto de partida y buscará en ese directorio y sus distintos subdirectorios aquellos ficheros que cumplan con las condiciones que le indiquemos y, opcionalmente, realizará una acción sobre cada uno de ellos.
La estructura del comando find es:
find [directorio_de_partida] [expresión_de_búsqueda] [patrón_de_búsqueda] [acción_a_realizar]
Veamos un ejemplo sencillo:
find ~ -name imagen.png
Donde:
- find es el comando que realiza la búsqueda
- ~ indica el directorio donde empezará a realizar las búsquedas
- -name indica que el nombre de los ficheros y directorios a buscar será siguiendo el patrón siguiente distinguiendo entre mayúsculas y minúsculas
- imagen.png es el patrón de búsqueda.
En este ejemplo buscará todos los ficheros que se llamen imagen.png que se encuentren en el directorio home del usuario y en todos sus subdirectorios.
Ignorar mayúsculas y minúsculas en los nombres de fichero
Podemos sustituir el modificador -name por -iname, que ignora la diferenciación entre mayúsculas y minúsculas.
find ~ -iname imagen.png
Encontrará cualquier fichero con nombre imagen, IMAGEN, Imagen… y con extensión png, PNG, pNg, pNG, Png…
Buscar ficheros con expresiones regulares
Con find podemos usar expresiones regulares para extender el patrón a buscar.
Asterisco
Con el asterisco indicamos que puede haber cualquier carácter cualquier número de veces. Incluso cero veces:
find ~ -iname *.png
Encontrará todos los ficheros con extensión .png ignorando si esos caracteres estás escritos con mayúscula o minúscula.
Rango
Podemos buscar un rango de caracteres, como que empiece con cualquier letra:
find ~ -iname [a-z]*.png
Que empiece con cualquier número:
find ~ -iname [0-9]*.png
O que empiece con un carácter de los indicados en una lista, por ejemplo, las vocales:
find ~ -iname [aeiou]*.png