O arquivo odt é um pacote zip que inclui formatação e outros recursos para o documento.
Eu quero ver o conteúdo de um arquivo odt que você teria que descompactar. As palavras reais contidas no documento estão no arquivo content.xml
.
Documentos do Word da Micosoft (* .docx) são do mesmo tipo de pacote. O texto de um documento do Word está em um arquivo de um arquivo compactado chamado document.xml
.
Eu escrevi um script para realizar pesquisa de texto em meus documentos. O script levaria dois argumentos para o arquivo (nome de arquivo e texto a ser encontrado), extrairia o arquivo para uma pasta temporária, grep o conteúdo do arquivo xml e exibiria o nome do arquivo correspondente ao texto pesquisado.
Script de amostra para pesquisar todos os arquivos odt em um diretório e seus subdiretórios:
#!/bin/bash
directory=""
string=""
tempdir="/tmp/searchdir"
echo "Searching directory [$directory] for [$string]"
echo "---------------------------------------------"
if [ $# -ne 2 ]; then
echo "Parameter error... Usage: [Directory to Search] [String to search]"
echo "Note: Use quotes if spaces are included in directory or search string."
echo "Exiting..."
exit 1
fi
mkdir $tempdir
while IFS= read -r -d '' i;
do
# echo Processing: $i
unzip -o "$i" -d $tempdir content.xml > /dev/null 2>&1
found=$(egrep -i "$string" $tempdir/content.xml)
if [[ "$found" ]]; then
echo "Found in [$i]"
fi
[[ -f /tmp/content.xml ]] && rm /tmp/content.xml # remove the temporary file if exist
done < <(find $directory -name \*odt -print0)
rm -r $tempdir