Você pode facilmente usar esses arquivos fornecendo a opção -a
para interpretar os arquivos como ascii:
grep -a "author" *.epub *.mobi
O acima funciona em todos os meus arquivos 1000 EPUB e MOBI, dando os resultados esperados.
EPUB e MOBI são ambos formatos de contêiner. O EPUB é essencialmente um arquivo .zip
com alguns requisitos estruturais, o MOBI é um arquivo no formato Palm Database.
Ambos os formatos permitem que dados compactados ou descompactados sejam colocados nos contêineres.
Se os dados que você está procurando estiverem em um "arquivo" no contêiner,
e esse arquivo é compactado, você precisará fornecer a string compactada e não a versão expandida e descompactada da string. Em particular, se você estiver lendo um EPUB / MOBI em um leitor de e-book, você geralmente não encontrará uma palavra 'abcde' que acabou de ler usando grep -a 'abcde'
em todos os arquivos EPUB e MOBI, pois o conteúdo do livro é Provavelmente (mas não necessariamente, é apenas uma medida de eficiência) em "arquivos" compactados no contêiner.
Este não é um problema de grep
ser incapaz de pesquisar nesses arquivos, mas de você não fornecer a string de pesquisa correta. O mesmo aconteceria se você lesse um arquivo com texto em japonês usando algum software de tradução do japonês para o inglês e esperasse encontrar as palavras em inglês usando o arquivo original. Com -a
e os padrões de palavras japoneses (binários) corretos, grep
funcionaria muito bem.