Grep es un hermoso comando que nos permite buscar en el contenido de los archivos. Esta funcionalidad es muy similar a la que incorporan Nautilus, Dolphin y tantos otros exploradores de archivos. No obstante, todos ellos comparten una limitación: no pueden buscar muy bien dentro de los archivos binarios (como los PDFs, DOCs, ODTs, etc.).
Su utilización típica es muy sencilla.
grep -i -n -r 'mi frase' /mi/ruta/para/buscarEn el ejemplo anterior utilizo 3 parámetros muy comunes:
-i ignora mayúsculas y minúsculas
-n muestra el número de línea en la que se encontró una coincidencia
-r buscar en forma recursiva dentro del directorio
Para más información, siempre está disponible grep --help o man grep.
Teniendo esto en cuenta, el comando para buscar nuestra frase en todos los PDFs (que tengan OCR aplicado) dentro de la carpeta ~/usemoslinux/pdfs es el siguiente:
grep -i -n -r 'blog usemos linux' ~/usemoslinux/pdfsSi tenemos suerte, aparecerá una lista de los archivos en los que se encontraron coincidencias. Lo único que resta, ahora sí, es abrir esos archivos uno por uno y buscar la frase en cuestión con el visor de PDFs predeterminado.
Grep y algo más: pdftotext
Para realizar una búsqueda más detallada dentro de cada PDF, es posible usar el comando pdttotext.En caso de que no lo tengas instalado, basta con escribir el siguiente comando:
sudo apt-get install poppler-utilsEsta herramienta hace lo que su nombre promete: convierte PDFs a archivos de texto. De ese modo, grep podrá buscar más fácilmente y arrojar resultados más detallados.
Para buscar una frase en todos los PDFs del directorio actual es preciso convertirlos primero y después pasarles grep para buscar las coincidencias. Eso se consigue escribiendo lo siguiente en un terminal:
for i in *.pdf do echo $i pdftotext "$i" - |grep -i -n 'frase' done
Donde frase es, obviamente, la frase que quieres buscar.
La ventaja de este método respecto del anterior es que ahora no sólo nos va a mostrar un listado de los archivos en los que se encontraron coincidencias, sino también las líneas completas e incluso los números de las líneas en las que se encontraron dichas coincidencias.
Nota: este método no sirve para buscar en PDFs que no tengan aplicado OCR por la sencilla razón de que esos PDFs no son más que un saco de imágenes. Es por eso que no es posible seleccionar el texto en un PDF sin OCR, mucho menos se puede buscar dentro de ellos. ¿Todavía no sabés cómo aplicar OCR a un documento escaneado?
Puedes seguirle en:
http://usemoslinux.blogspot.com, Twitter o Facebook.
¿Quieres ayudarnos? ¿Tienes algún truco que comentar? ¿Noticia relevante? ¿Quieres escribir en este blog? Es fácil.