searchfs
é uma ferramenta de linha de comando do macOS para pesquisar rapidamente por nome de arquivo em volumes APFS e HFS+ inteiros. A pesquisa ocorre no nível do driver usando o catálogo do sistema de arquivos. Isso significa que a árvore de diretórios do volume pode ser verificada muito mais rapidamente do que com uma pesquisa recursiva padrão de nome de arquivo usando find
.
A pesquisa não diferencia maiúsculas de minúsculas por padrão. Os arquivos correspondentes são impressos na saída padrão na ordem em que são encontrados no catálogo. Consulte a página de manual para obter detalhes.
KatSearch é um aplicativo gráfico nativo do macOS construído sobre searchfs
.
git clone https://github.com/sveinbjornt/searchfs.git
cd searchfs
make
make install
Instala o binário em /usr/local/bin/
. A página de manual entra em /usr/local/share/man/man1/
.
De acordo com meus benchmarks, searchfs
é executado cerca de 35-50% mais rápido que find
nos sistemas de arquivos APFS e muitas vezes mais rápido no HFS+.
A seguir estão os resultados de benchmark em um Retina MacBook Pro 2012 com um SSD de 512 GB fornecido pela Apple executando um sistema de arquivos APFS contendo cerca de 2 milhões de arquivos:
$ time searchfs " something "
0,01s user 33,15s system 32% cpu 1:23,59 total
$ time find / -name " *something* "
9,53s user 67,64s system 49% cpu 2:37,39 total
Embora eu ainda não tenha testado isso adequadamente, searchfs
é provavelmente muito mais rápido do que find
em unidades de disco rígido, que têm tempos de busca mais altos. Também é muito rápido em sistemas de arquivos com um pequeno número de arquivos.
A Apple adicionou a pesquisa de catálogo do sistema de arquivos ao Mac OS com a introdução do Hiearchical File System (HFS) em 1985. O HFS substituiu a estrutura de tabela plana anterior no antigo sistema de arquivos MFS por um arquivo de catálogo usando uma estrutura de árvore B. Ao contrário do sistema de arquivos FAT do Windows, o HFS (e mais tarde, HFS+) organizou toda a árvore de diretórios em um grande arquivo no disco, com nós interligados que não correspondiam à estrutura hierárquica de pastas. Isso significava que os volumes podiam ser pesquisados muito rapidamente, independentemente do tamanho.
O Mac OS clássico expôs essa funcionalidade por meio da função FSCatalogSearch(), que iterou de forma eficiente nos nós, minimizando assim os tempos de busca no disco. Na era pré-SSD, isso deu ao Mac uma vantagem significativa de desempenho sobre o Windows quando se tratava de pesquisa de volume total. Por muito tempo, FSCatalogSearch continuou disponível no Mac OS X/macOS por meio das APIs Carbon, mas agora foi descontinuado e não oferece suporte a APFS, o novo sistema de arquivos da Apple.
No entanto, a pesquisa de catálogo para HFS+ e APFS está disponível nas bibliotecas de sistema de baixo nível de Darwin por meio da função searchfs(). O programa searchfs
faz uso desta função.
Direitos autorais © 2017-2020 Sveinbjorn Thordarson <[email protected]>
A redistribuição e o uso em formato fonte e binário, com ou sem modificação, são permitidos desde que as seguintes condições sejam atendidas:
As redistribuições do código-fonte devem manter o aviso de direitos autorais acima, esta lista de condições e a seguinte isenção de responsabilidade.
As redistribuições em formato binário devem reproduzir o aviso de direitos autorais acima, esta lista de condições e a seguinte isenção de responsabilidade na documentação e/ou outros materiais fornecidos com a distribuição.
Nem o nome do detentor dos direitos autorais nem os nomes de seus colaboradores podem ser usados para endossar ou promover produtos derivados deste software sem permissão prévia específica por escrito.
ESTE SOFTWARE É FORNECIDO PELOS DETENTORES DE DIREITOS AUTORAIS E COLABORADORES "NO ESTADO EM QUE SE ENCONTRAM" E QUAISQUER GARANTIAS EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO SE LIMITANDO A, GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO A UM DETERMINADO FIM SÃO REJEITADAS. EM HIPÓTESE ALGUMA O DETENTOR DOS DIREITOS AUTORAIS OU COLABORADORES SERÃO RESPONSÁVEIS POR QUAISQUER DANOS DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, EXEMPLARES OU CONSEQUENCIAIS (INCLUINDO, MAS NÃO SE LIMITANDO A, AQUISIÇÃO DE BENS OU SERVIÇOS SUBSTITUTOS; PERDA DE USO, DADOS OU LUCROS; OU INTERRUPÇÃO DE NEGÓCIOS) QUALQUER CAUSA E EM QUALQUER TEORIA DE RESPONSABILIDADE, SEJA POR CONTRATO, RESPONSABILIDADE ESTRITA OU ATO ILÍCITO (INCLUINDO NEGLIGÊNCIA OU DE OUTRA FORMA) DECORRENTE DE QUALQUER FORMA DO USO DESTE SOFTWARE, MESMO QUE AVISADO DA POSSIBILIDADE DE TAIS DANOS.