Espacio de tecnologia, software libre y sus derivados. Una horda de monos entrenados escriben de vez en cuando por aqui algunas noticias, opiniones e incluso alguna que otra cosa fuera del tema. Maqueros, favor de abstenerse que no somos lo suficientemente guapos.

Piano daemon

Buscando ficheros por nombre en FreeBSD

Probablemente puedes recordar este problema: Tenías algún tipo de fichero y no podías recordar donde lo pusiste.
Aquí es donde el comando find viene a ser útil. ¿Cómo usarlo? find viene, por supuesto, con un extenso man page pero veamos unos “casos típicos”: Buscar un archivo llamado lostfile.txt, recorriendo el árbol de directorios comenzando en el directorio actual:

find . -name lostfile.txt -print

find acepta también wildcards. Recuerda colocar entre comillas los wildcards, de lo contrario el shell no los reconocerá como tales. Aquí un ejemplo:

find . -name "lost*" -print

Este comando puede ser un poco lento cuando necesites buscar en un árbol de directorios muy grande. Aquí el comando locate puede ayudar. Este realmente no busca directamente un archivo en el sistema de ficheros. Busca en una base de datos. Es bastante más rápido pero la base de datos podría estar desactualizada, pero puedes, por supuesto, correr el comando updatedb manualmente de vez en cuando para actualizarla. locate realiza búsquedas de subcadenas.

locate lostfile

Este localiza los ficheros lostfile.txt o mylostfile.txt, etc…

Algunas veces te gustaría encontrar todos los ficheros en el árbol de directorios que no contengan cierta cadena. Por ejemplo todos los ficheros excepto .o y .c. Aquí están un par de posibilidades para hacerlo::

find . ! -name "*.o" ! -name "*.c" -print
find . -print | fgrep -v '.o' | fgrep -v '.c'

Hay muchas utilidades de búsqueda disponibles para Unix. Por lo tanto este artículo no puede estar completo.

Comenta