Buscar cadenas de texto dentro de ficheros ODT

Como sabéis, los ficheros ODT de LibreOffice son simples ficheros .zip . Dentro de ellos, encontramos distintos archivos xml, gráficos incrustados, etc. Un ejemplo:

$ unzip -l herramientas.odt 
Archive:  herramientas.odt
  Length      Date    Time    Name
---------  ---------- -----   ----
       39  2012-07-20 12:00   mimetype
      997  2012-07-20 12:00   meta.xml
     8798  2012-07-20 12:00   settings.xml
    12512  2012-07-20 12:00   content.xml
     7003  2012-07-20 12:00   Thumbnails/thumbnail.png
       22  2012-07-20 12:00   layout-cache
      899  2012-07-20 12:00   manifest.rdf
        0  2012-07-20 12:00   Configurations2/popupmenu/
        0  2012-07-20 12:00   Configurations2/images/Bitmaps/
        0  2012-07-20 12:00   Configurations2/toolpanel/
        0  2012-07-20 12:00   Configurations2/statusbar/
        0  2012-07-20 12:00   Configurations2/toolbar/
        0  2012-07-20 12:00   Configurations2/progressbar/
        0  2012-07-20 12:00   Configurations2/menubar/
        0  2012-07-20 12:00   Configurations2/floater/
        0  2012-07-20 12:00   Configurations2/accelerator/current.xml
    12033  2012-07-20 12:00   styles.xml
     1185  2012-07-20 12:00   META-INF/manifest.xml
---------                     -------
    43488                     18 files

El problema viene cuando tienes una carpeta llena de ficheros .ODT y quieres buscar un texto en concreto en todos ellos. Al tratarse de ficheros comprimidos, no vale con usar ni el comando strings ni el comando grep, porque no encontrará lo que buscas.

¿Solución? Convertir los .odt a texto con el comando odt2txt (funciona también para .odg y otros formatos):

for i in *.odt; 
do 
   echo $i; 
   echo "*************"; 
   odt2txt $i | grep -i cadena_de_texto_a_buscar; 
done

Ese bucle for recorre todos los ficheros con extensión .odt, los convierte a texto (no genera ficheros nuevos, la conversión se realiza hacia la salida estándar) y los pasa por un pipe a grep, que realiza la búsqueda. El echo $i con los *** sirve para remarcar el nombre del fichero en el que se encontró la cadena.

2 comentarios en «Buscar cadenas de texto dentro de ficheros ODT»

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.