Lo básico (de lo básico (de lo básico…)) de los comandos find y locate
Publicado por yylex en Julio 15, 2008
En Linux existen al menos dos opciones si se trata de buscar archivos en los medios de almacenamiento. find recorre el directorio especificado cada vez que es invocado mientras que locate se vale de una base de datos por lo cual se puede obtener resultados mucho más rápido.
La desventaja de locate es que si esta base de datos que es puesta al día con la ayuda de updatedb se encuentra desactualizada los resultados obtenidos pueden variar de los reales.
tracker no lo utilizo mucho debido al overhead que implica la ejecución de este en segundo plano aunque muestre las vistas previas y el montón de opciones útiles con que cuenta. Otro ejemplo es el Google Desktop (Y…, ¿a quién lo le gusta la búsqueda de Google?) Debido a esto me limito a utilizar el comando find o locate en todo caso, o bien uno de los front-end para éstos del cual hablaré más adelante.
Usando el comando find
La estructura básica para el comando find es la siguiente:
find [directorio] [expresión]
donde directorio es el path donde se buscará los archivos que coincidan con las restricciones indicadas y expresión puede agrupar el nombre que el/los archivos devueltos deberán contener, la restricción de tamaño indicada, permisos, comandos a ejecutar, etc.
Algunos ejemplos:
find ~ -name vacaciones
busca todos los archivos en el directorio home que contengan la palabra vacaciones.
find /media/sda3 -name "*.odt"
busca todos los archivos que terminan en odt (con extensión ODT, en el mundo de Windows) en el directorio /media/sda3.
find / -size +5M
busca todos los archivos que pesan igual o más de 5MB.
Más información sobre formas de uso de find puede ser consultada en las páginas del manual.
Usando el comando locate
Antes que nada lo más conveniente será ejecutar el comando updatedb
# updatedb
para asegurarnos que los resultados sean consistentes. En muchas de las distribuciones actuales este comando se ejecuta después de que el sistema ha iniciado o bien, a una hora establecida y configurable a través del cron, por ejemplo.
locate a diferencia de find está más restringido en cuanto a funcionalidad ya que permite únicamente buscar archivos basándose en el nombre de éstos incluyendo la ruta absoluta (ej. /media/sda1/documento.odt y no solo documento.odt.) Es importante tomar en cuenta que se usan comillas simples cuando son necesarias.
Algunos ejemplos:
locate python
todos los archivos que contengan la palabra python en el nombre de archivo o directorio.
locate '*.odp'
todos los archivos que terminen en .odp.
Más información sobre formas de uso de locate puede ser consultada en las páginas del manual.
Otra forma alternativa y más práctica (cuando se cuenta con las X) es utilizar Catfish que viene siendo un front-end para find, locate, tracker, strigi, y otros que deberán instalarse previamente. Con la ventaja que evita el tener que utilizar comodines en el nombre de archivo cuando éste debe cumplir con un patrón y poder combinar mayúsculas y minúsculas sin necesidad de especificarlo. Bastará con separar cada palabra (o serie de caracteres) con un espacio en blanco.

Pepe escribió
Excelente, de verdad es de lo básico, lo más básico pero que a veces se nos olida, gracias por publicarlos.
Saludos.
Omar Meza escribió
Buena onda por el aporte. Sobre todo para los que no tenemos mucho tiempo en esto. Los he utilizado, pero no del todo.