El comando find nos puede servir para ahorrarnos mucho tiempo ya que nos permite encontrar ficheros que cumplan un determinado patrón y ademas actuar sobre ellos.
El ejemplo típico del uso del comando find es encontrar uno o varios ficheros que cumplan unas determinadas características:
find . -name *.jpg
Nos encuentra a partir del directorio actual los ficheros con extensión .jpg
Si ahora quisiéramos listar (con ls -l) todos esos ficheros encontrados, teclearíamos lo siguiente:
find . -name *.jpg -exec ls -l {} ;
La explicación es la siguiente: Primero “find . -name *.jpg” encuentra los ficheros que
queremos y luego se los pasa al comando “ls -l” a través de la opción -exec. La opcion -exec, ejecuta el comando este después de ella, sustituyendo las llaves {} por la ruta del fichero encontrado.
Ejemplo:
-rwxr-xr-x 1 elsotani elsotani 244905 Feb 14 05:38 ./public_html/Fotos/s4200114.jpg
-rwxr-xr-x 1 elsotani elsotani 248482 Feb 14 05:38 ./public_html/Fotos/s4200115.jpg
Otra opción interesante que nos da el comando find es permitir la ejecución opcional de un comando sobre un fichero. Esta opción es -ok y se pone en lugar del -exec. Con esta opción, el comando find nos preguntara antes si queremos ejecutar el comando que viene después del -ok. Ejemplo:
find . -name *.jpg -ok ls -l {} ;
< ls ... ./public_html/Webs/Fotos/s4200001.jpg > ? n
< ls ... ./public_html/Webs/Fotos/s4200002.jpg > ? y
-rwxr-xr-x 1 elsotani elsotani 241551 Feb 14 05:36 ./public_html/Fotos/s4200002.jpg
< ls ... ./public_html/Webs/Fotos/s4200003.jpg > ?
Existen muchas mas utilidades que le podemos dar al comando find:
- Borrar ficheros de logs
- vaciar ficheros de logs de mas de un determinado tamaño o de una determinada antigüedad.
- Borrar ficheros temporales
- etc.