#!/bin/bash # oofind - Procura um texto em arquivos do OpenOffice Writer (.sxw) # Requisitos: bash, sed, grep, unzip # Autor: Aurelio Marinho Jargas, Set2004 (http://aurelio.net) # # Uso: oofind PALAVRA [ARQUIVOS] # Se nenhum arquivo for especificado, procura nos arquivos .sxw do # diretorio corrente. # # Exemplo: # # $ ls # adm-sistemas-I-instrutor.sxw adm-sistemas-I.sxw # # $ oofind Linux # Procurando por 'Linux' nos arquivos informados... # Achei em adm-sistemas-I-instrutor.sxw # Achei em adm-sistemas-I.sxw # # # TODO -x pesquisa nas tags XML tambem # TODO -i case insensitive tmpdir=/tmp/lixo.$$ # paranoicos: usem mktemp trap "rm -rf $tmpdir" 2 15 # faxina se apertar Ctrl+C [ "$1" ] || { echo "uso: oofind PALAVRA arquivos.sxw"; exit; } texto="$1" ; shift # obtem palavra do usuario echo "Procurando por '$texto' nos arquivos informados..." mkdir "$tmpdir" # cria dir temporario for arquivo in ${@:-*.sxw}; do # arqs informados ou *.sxw unzip -q -d "$tmpdir" $arquivo # unzipa no dir temporario sed 's/<[^>]*>//g' "$tmpdir/content.xml" | grep -qs "$texto" && echo "Achei em $arquivo" # apaga tags XML e procura rm -rf "$tmpdir"/* # limpa a bagunca done rmdir "$tmpdir" # remove dir temporario