Se estiver usando o FreeBSD como um servidor de arquivos para clientes Windows, é útil poder executar pesquisas de arquivos no lado do servidor em vez de no lado do cliente.
Um exemplo típico pode ser: encontrar todos os arquivos que atendem a alguns critérios de metadados (nome, caminho, tamanho, data, etc.) com algum literal ou regex em seu conteúdo extraído de texto. A pesquisa está em um grande diretório recursivo que contém arquivos mistos, e os acertos de conteúdo podem estar em qualquer (ou vários) de: notas .txt, documentos .docx / .xlsx, .pdf, .zip / .rar / .tgz /. arquivos compactados iso, ou com falha que talvez até mesmo seqüências de caracteres em um arquivo binário.
A primeira parte é fácil, use apenas find
. Procurar em um tipo de arquivo também não é difícil. Mas o FreeBSD não tem uma noção de filtros de arquivos "conhecidos" ou uma única API específica para analisar dados de arquivos que usam filtros plugáveis em um formato comum (embora existam filtros de extração de texto conhecidos para muitos tipos de arquivos individuais, como pdf, doc / docx, xls / xlsx, formatos de arquivo, bancos de dados sqlite, arquivos binários contendo strings, etc) para que você não possa jogar grep
, find -exec
, pdftotext
ou unzip | sed
usando extração Microsoft XML código universalmente nos resultados. Eu acho que você teria que gerar uma lista ou fluxo de nomes de arquivos com find
, então passar cada um através de seu filtro apropriado baseado na extensão ou file
, e reunir o que quer que seja, como saída.
Se eu precisar fazer esse tipo de pesquisa de conteúdo com bastante frequência em uma grande loja de arquivos, existe uma ferramenta específica projetada e mais eficiente para ela, ou qual é a abordagem mais eficiente por aí?
Atualizar - Estou interessado apenas na pesquisa direta de CLI arquivo por arquivo . Não estou interessado nem um pouco, na indexação de conteúdo e depois na pesquisa de um índice. Essa questão está relacionada à pesquisa literal / regex arquivo por arquivo no local, como em find
, mas quando o conteúdo também é pesquisado e não é texto simples, mas vários tipos de arquivo com filtros de extração de texto variados. Portanto, não é uma dup das perguntas existentes sobre a pesquisa de conteúdo indexado. Desculpe, isso não ficou claro antes, eu não tinha percebido a ambiguidade.