Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom Bar]
[Photo of the Author]
Guido Socher

Acerca del Autor : Ama a Linux porque es gratis y es divertido trabajar con la gente de la comunidad Linux de todo el mundo. Pasa tiempo con su novia, escuchando la BBC World Service, montando bicicleta por el campo y jugando con Linux.

Escribe al autor

Contenidos:
Buscando ficheros por nombre
Obteniendo una vista completa
Buscando ficheros por contenido

Busqueda de ficheros

[Illustration]

Resumen: Este art�culo nos da una introducci�n sobre como buscar ficheros por nombre y por contenido.



Buscando ficheros por nombre

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. En algunas distribuciones la base de datos localizada es actualizada cada noche 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...

Hasta ahora estabamos buscando ficheros de los cuales ten�amos una remota idea de sus nombres. Tal vez el nombre del archivo no era lostfile.txt sino lastfile.txt o leastfile.txt o lostfile.txt o Lostfile.txt o lostfile.text y no puedes recordar exactamente el nombre. �C�mo podr�as encontrar el archivo a�n? en este caso podr�as usar una utilidad para encontrar ficheros que tolera fallas en la escritura del nombre llamada ftff (fault tolerant file find). Esta utilidad busca el archivo y permite un n�mero de "errores en la escritura". Este comando encontrar�a los nombres mal escritos de los ficheros:

ftff lostfiles.txt

El n�mero permitido de errores en la escritura del nombre depende del largo del mismo pero tambi�n puede establecerse con la opci�n -t. Para permitir un m�ximo de 2 errores y usar tambi�n un wildcard, s�lo tipea:

ftff -t2 "lostfiles*"

ftff es un programa de mi autoria y forma parte de un paquete llamado whichman-1.4 que puede ser bajado de

sunsite.unc.edu/pub/ Linux/apps/doctools/whichman-1.4.tar.gz

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'
si tienes la versi�n gnu de find: find | fgrep -v '.o' | fgrep -v '.c'
find | egrep -v '\.[oc]'

Obteniendo una vista completa del sistema de ficheros

Algunas veces te agradar�a tener una visi�n total del sistema de ficheros frente a ti. Por ejemplo: Tienes un nuevo CD y quisieras ver que es lo que tiene. Podr�as usar solamente ls -R. Personalmente prefiero por f�cil lectura uno de los siguientes: tree dibuja un diagrama de �rbol (sunsite.unc.edu/pub/Linux/utils/file/ tree-1.2.tgz ).

tree
o con nombres largos de archivo: tree -fF

Tambi�n est� por supuesto, el viejo, pero buen find. La versi�n GNU de find, que viene usualmente con Linux, tambi�n tiene la posibilidad de cambiar el formato de impresi�n para imprimir, por ejemplo el tama�o del archivo con el nombre:

find . -ls
find . -print o con gnu find: find
find . -printf "%7s %p\n"

Hay tambi�n un peque�o programa en perl usando el comando ls que hace cosas similares. Se puede bajar de aqu�: lsperl.gz. Puedes encontrar probablemente muchas m�s herramientas para ver ficheros pero �sta es, para la mayor�a de los casos, suficiente.

Encontrando ficheros por contenido (buscando cadenas de texto en ficheros)

La utilidades standard para buscar cadenas de texto en ficheros son grep/egrep para la b�squeda de expresiones regulares y fgrep para buscar cadenas literales. Para buscar una expresi�n en todos los ficheros del directorio actual s�lo tipea:

egrep -i "search expression" *

Para buscar cadenas en todos los ficheros de todo el �rbol de directorios puedes combinar el comando find con otro comando de b�squeda de archivo, por ejemplo: egrep. Esto puede ser realizado de muchas formas:

egrep -i "expression" `find . -type f -print`
find . -type f -exec egrep -i "expression" /dev/null {} \;
find . -type f -print | xargs egrep -i "expression"

Si encuentras �sto d�ficil de recordar entonces puedes usar un peque�o shell script que puedes encontrar aqu� grepfind.gz Este script tambi�n se asegura que caracteres no imprimibles sean removidos en caso de que ejecutes egrep en un archivo binario.

Un programa de b�squeda muy interesante es agrep. Este funciona b�sicamente como egrep pero realiza b�squedas que toleran errores en la escritura del nombre. De esta manera puedes tambi�n encontrar palabras mal escritas. Para buscar una expresi�n con un m�ximo de dos errores de escritura puedes usar:

agrep -i -2 "search exprission" *

El programa agrep puede ser bajado de sunsite sunsite.unc.edu/pub/Linux/util s/text/agrep-2.04.tar.Z o de su sitio original ftp://ftp.cs.arizona.edu/agrep/

Tambi�n est� glimpse. Esta es una poderosa utilidad de b�squeda. Utiliza un concepto similar a locate. Primero una base de datos necesita ser construida, para que la b�squedas sean r�pidas. Para construir una b�squeda indexada del contenido de todos los ficheros empezando en el directorio actual:

glimpseindex .

Despu�s de eso puedes buscar una cadena en todos los ficheros que fueron previamente indexados

glimpse -i -2 "search exprission"

glimpse tambi�n tolera errores de escritura (como agrep) y el -2 permite dos errores. glimpse est� disponible en http://glimpse.cs.arizona.edu/


Hay muchas utilidades de b�squeda disponibles para Unix y Linux especialmente. Por lo tanto este art�culo no puede estar completo. Si estas interesado en m�s trucos y utilidades como �stas echa un vistazo en los ficheros .lsm en http://sunsite.unc.edu/pub/Linux/utils

P�sala bien y feliz b�squeda.

Traducido por Ruben Sotillo

This website is maintained by Miguel Angel Sepulveda
© Guido Socher 1998
LinuxFocus 1998