grep para texto em arquivos * .odt ou * .doc? [duplicado]

3

Como posso pesquisar arquivos * .odt ou * .doc que contenham determinado texto no Ubuntu?

Eu uso grep -rl <text to search for> , mas isso só funciona para arquivos de texto.

Nota: uma solução que usa o grep (como o searchmonkey) não funcionará porque os arquivos * .doc ou * .odt têm um formato especial.

De Como procurar por strings dentro de arquivos em uma pasta?

  • O Recoll deseja indexar meu diretório inicial, mas eu quero pesquisar * .odt arquivos em diretórios específicos; Eu não consegui descobrir como fazer isso com esta ferramenta.
  • O Searchmonkey parece ser uma GUI para o grep e, como mencionei, grep não funciona em arquivos * .doc ou * .odt.
  • O Regexxer também tem o mesmo problema.

De Pesquisando documentos ODT sem abri-los?

  • Como o Recoll, não consegui descobrir como pesquisar arquivos * .odt em diretórios específicos com essa ferramenta.
por PJ Singh 23.07.2017 / 05:02

1 resposta

4

catdoc parece funcionar recursivamente para .doc arquivos em 16.04: link

Não há menção a .docx , então você precisa descobrir isso sozinho.

Para os arquivos .ods ou .odt , você pode ter o seguinte script de cortesia kaibob @ ubuntuforums.org :

#!/bin/bash

find . -type f -name "*.od*" | while read i ; do
   [ "" ] || { echo "You forgot search string!" ; exit 1 ; }
   unzip -ca "$i" 2>/dev/null | grep -iq "$*"
   if [ $? -eq 0 ] ; then
      echo "string found in $i" | nl
   fi
done

Digamos que você o chame de "libre-search" e o tenha tornado executável.

Em seguida, a execução de libre-search your_string deve listar os arquivos que contêm your_string .

unzip -ca "$i" 2>/dev/null cuida do conteúdo indesejado.
grep -iq torna a pesquisa insensível a maiúsculas e minúsculas.
nl numera a saída.

    
por DK Bose 23.07.2017 / 13:48