Você está simplesmente perdendo o predicado que diz o que está pesquisando (por exemplo -name
).
Para localizar no diretório inicial por nome:
find ~ -name \*.pdf
Observe que o curinga *
precisa ser escapado para que o shell não o interprete antes que o find coloque as mãos nele. Usar '*.pdf'
e "*.pdf"
terá o mesmo efeito que \*.pdf
.
Para localizar sem distinção entre maiúsculas e minúsculas:
find ~ -iname \*.pdf
Para remover os resultados apenas em arquivos (a expressão do nome provavelmente cuidará disso para você, mas apenas no caso de você ter diretórios com nomes estranhos):
find ~ -type f -iname \*.pdf
Para garantir que encontre os links simbólicos a seguir (geralmente, eu mesmo quero fazer isso ao fazer pesquisas):
find ~ -follow -type f -iname \*.pdf
Para fazer algo com os arquivos que você encontrou: você pode despejar isso em um arquivo usando o redirecionamento stdout (por exemplo, aderir no > filename
final) ou usar a -exec
opção para executar um comando (consulte a página de manual para obter detalhes). Porém, este último executa um comando em cada arquivo por vez. geralmente é mais rápido permitir que o xargs
comando passe seus arquivos encontrados como argumentos para outro comando, todos de uma vez ou grandes blocos de cada vez. Por exemplo, para grep ad-hoc (mas não indexado) nos arquivos de cabeçalho:
find ~ -follow -type f -name \*.h | xargs grep -nH "identifier"
E uma extensão final, para que esse último comando funcione corretamente se você tiver arquivos e diretórios com espaços:
find ~ -follow -type f -name \*.h -print0 | xargs -0 grep -nH "identifier"
find
está longe de ser inútil.