Procurando Mac Através do Terminal?

19

existem comandos para procurar o Mac usando o terminal? Eu tentei usar o grep para procurar, mas parece um pouco indiferente e nada aparece.

Por exemplo, eu digitaria "grep Files" (um nome de pasta) e ele imprime apenas uma linha em branco e nada acontece.

    
por JFW 18.08.2010 / 11:46

4 respostas

18

Você também pode usar o comando mdfind para realizar uma pesquisa com o Spotlight. Mais informações aqui .

Use mdfind -name searchterm para recuperar arquivos com o nome searchterm . Use mdfind searchterm para realizar uma pesquisa no nome e conteúdo do arquivo.

    
por 18.08.2010 / 13:04
20

Se você quiser apenas encontrar arquivos com um determinado nome, use find

A página do manual pode ser encontrada AQUI ou digitando man find no terminal.

Basicamente, o find procurará recursivamente por um critério de reunião de arquivo especificado por você. O exemplo mais fácil:

find . -name file_name -print

Isso irá procurar por um arquivo chamado "file_name" começando no diretório atual e pesquisando abaixo e imprimindo os arquivos com esse nome.

find ~ -name ".DS_Store" -delete

Isso encontrará todos os arquivos .DS_Store e os excluirá.

Você pode pesquisar por nome, regex, data. Você pode agir no arquivo de qualquer maneira Unix com o predicado -exec .

Você também pode usar o find como o início de um pipeline de ações mais complexo. Exemplo:

find . -type f -print | egrep -i '\.m4a$|\.mp3$'

Encontrará todos os arquivos com extensões .m4a ou .mp3

find . -type f -print | egrep -i '\.m4a$|\.mp3$' | wc -l

Fornecerá uma contagem desses arquivos.

    
por 18.08.2010 / 17:46
3

Se você quiser pesquisar em uma pasta inteira, apenas use -r no grep:

grep -r pattern folder/to/search

Com a localização, você também pode usar xargs:

find folder/to/search -name '*.txt' | xargs grep pattern

ou para garantir que você pesquise dois arquivos por vez e, portanto, tenha os nomes de arquivo especificados:

find folder/to/search -name '*.txt' | xargs grep -n2 pattern
    
por 18.08.2010 / 17:46
2

grep espera um padrão e um filespec. Se um estiver faltando, ele usa o que é passado como padrão e espera que os dados pesquisem por meio da entrada padrão.

Se você quiser usar um filespec mais complexo, use find .

find ~ -name '*.txt' -exec grep -q 'secret' {} \; -print
    
por 18.08.2010 / 11:51