lunes, 25 de julio de 2011

Búsqueda de ficheros a través de una cadena de texto interna. Otra de terminal

Hoy estaba buscando datos antiguos en mi directorio Documentos. Es bastante complejo, por que ese directorio contiene lo que viene a ser la copia de todo mi trabajo desde 1990. En conjunto contiene 172612 ficheros -algunos muy repetidos con pequeñas variaciones- en 115,6GB, comprobado con filelight.


Yo siempre he usado kdirstat, pero en Ubuntu 11.04 no está disponible en los repositorios y me he pasado a este nuevo -para mi- mapa de disco duro, que no está nada mal. Bueno, no nos dispersemos. Como es natural es muy difícil encontrar un fichero ahí, sobre todo cuando no recordamos como se llama. Decidí buscarlo a través de una búsqueda de texto interno; mediante una cadena que estaba seguro que tenían que contener, pude encontrar 5 copias distintas para poder extraer la información deseada. La orden final en terminal, basándonos finalmente en algunos comentarios realizados a este blog, fue:

find /ruta/ -type f -exec grep -il CADENA {}\;

aunque se logran los mismos resultados con

find /ruta/ -type f | xargs grep -i CADENA

Es conveniente estudiar los man de los diferentes comandos (man find y man grep) para entender que hace cada cosa. Realmente había dado muchas ordenes basándome es mis limitados conocimientos de terminal, pero lo que hacía que no pudiera encontrar los ficheros era la falta de -i, que hace que no se diferencien mayúsculas y minúsculas (man grep: "Ignore case distinctions in both the PATTERN and the input files"). Esos ficheros estaban escritos en mi época oscura de Windows y tenía cierta tendencia a llamar a las variables con mayúscula inicial, y por ello me fallaba siempre mi cadena de búsqueda.

No hay comentarios:

Publicar un comentario