find é um comando para filtrar recursivamente objectos no sistema de ficheiros baseado num mecanismo condicional simples. Use find para procurar por um ficheiro ou directório no seu sistema de ficheiros. Usando a bandeira -exec, os ficheiros podem ser encontrados e imediatamente processados dentro do mesmo comando.

- Localizar ficheiros Linux por nome ou extensão
- Comandos e Sintaxe Comum de Encontrar Linux
- Encontrar um ficheiro no Linux usando o nome do ficheiro
- Localize um ficheiro no seu directório actual usando o comando Find
- Localizar ficheiros de imagem no Linux usando a linha de comandos
- Localizar um ficheiro vazio no seu directório usando a linha de comandos
- Opções e otimizações para encontrar arquivos no Linux usando a linha de comando
- Procurar ficheiros no Linux através da linha de comandos
- Utilizar o Grep para encontrar ficheiros no Linux usando a linha de comandos
- Processar e encontrar arquivos usando o comando Find no Linux
- Como encontrar e excluir arquivos usando a linha de comando Linux
Localizar ficheiros Linux por nome ou extensão
Utilizar find a partir da linha de comando para localizar um ficheiro específico por nome ou extensão. O exemplo seguinte procura por *.err ficheiros no directório /home/username/ e todos os subdirectórios:
find /home/username/ -name "*.err"
Deverá ver uma saída semelhante no seu console:
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
Comandos e Sintaxe Comum de Encontrar Linux
O comando find geralmente assume a seguinte forma:
find options starting/path expression
- O atributo
optionscontrola o comportamento e método de optimização do processofind. - O atributo
starting/pathdefine o directório de nível superior ondefindcomeça a filtragem. - O atributo
expressioncontrola os testes que pesquisam a hierarquia de directórios para produzir a saída.
Encontrar um ficheiro no Linux usando o nome do ficheiro
Para encontrar um ficheiro usando o nome do ficheiro, use a sintaxe find -name filename. Omitir o caminho procura o ficheiro em todo o disco. Por exemplo, você pode encontrar um ficheiro chamado example.err localizado no seu directório /home/username com o seguinte comando:
find -name example.err
Você deve ver uma saída semelhante:
./username/example.err
Localize um ficheiro no seu directório actual usando o comando Find
Dê uma vista de olhos na estrutura do directório de exemplo e nos ficheiros. Eles são referidos ao longo dos exemplos deste guia.
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err├── directory_2│ └── example.err├── directory_3│ └── example.err├── image01.png├── web_files│ ├── app.html│ ├── cb=gapi.loaded_0│ ├── edit.html│ ├── m=_b,_tp│ ├── rs=AA2YrTtgyE1yYXiu-GuLS6sbJdYr0u8VBQ│ ├── rs=AA2YrTvod91nzEJFOvvfJUrn6_vLwwY0bw│ ├── saved_resource.html│ ├── single.html│ └── unnamed.jpg├── web.html└── example.err
Se estiver em directory_1 e quiser encontrar o ficheiro example.err dentro do directório ou de qualquer uma das suas subdirectorias, pode emitir o seguinte comando:
find . -name example.err
A sua saída assemelha-se ao seguinte:
./example.err./directory_1/example.err
A saída reflecte directory_1 estrutura de directórios:
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err
Localizar ficheiros de imagem no Linux usando a linha de comandos
Referenciando a estrutura de ficheiros na secção anterior, existe uma imagem chamada image01.png que está localizada na raiz (/)s da estrutura de directórios.
Para encontrar o ficheiro image01.png, corra o seguinte comando find que localiza todos os ficheiros .png guardados dentro do directório /.
find -name *.png
Você deve ver uma saída semelhante:
./image01.png
Mude o tipo de ficheiro da imagem e procure por qualquer ficheiro .jpg dentro do directório raiz (/):
find -name *.jpg
A saída assemelha-se ao exemplo. Consulte a estrutura do directório de exemplo na secção anterior para ver a localização do ficheiro.
./web_files/unnamed.jpg
Localizar um ficheiro vazio no seu directório usando a linha de comandos
Para encontrar um ficheiro vazio no seu directório usando a linha de comandos, emita o seguinte comando:
find . -type f -empty
Se não for retornado nenhum output, então não há um ficheiro vazio dentro do seu directório actual.
Opções e otimizações para encontrar arquivos no Linux usando a linha de comando
A configuração padrão para find ignora os links simbólicos. Se você quiser que find siga e retorne links simbólicos, adicione a opção -L ao comando, como mostrado abaixo:
find -O3 -L /var/www/ -name "*.html"
Este comando permite o nível máximo de otimização (-O3) e permite que find siga links simbólicos (-L). find procura em toda a árvore de directórios abaixo de /var/www/ por ficheiros que terminam com .html.
find optimiza a sua estratégia de filtragem para aumentar a performance. Três níveis de otimização selecionáveis pelo usuário são especificados como -O1, -O2, e -O3. O nível -O1 otimização é o padrão e força find a filtrar com base no nome do arquivo antes de executar todos os outros testes.
Optimização no nível -O2 prioriza os filtros de nome de arquivo, como em -O1, e então executa toda a filtragem de tipo de arquivo antes de proceder com outras condições mais intensivas em recursos. Level -O3 optimization permite find realizar a otimização mais severa e reordena todos os testes com base em suas despesas relativas e na probabilidade de sucesso.
| Command | Descrição |
|---|---|
-O1 |
Filtro baseado no nome do arquivo primeiro (padrão). |
-O2 |
Nome do ficheiro primeiro, depois tipo de ficheiro. |
-O3 |
Permitir que find reordene automaticamente a pesquisa com base no uso eficiente de recursos e probabilidade. de sucesso |
-maxdepth X |
Procurar diretório atual, bem como todos os subdiretórios X níveis profundo. |
-iname |
Procurar sem considerar o caso de texto. |
-not |
Retornar apenas os resultados que não correspondem ao caso de teste. |
-type f |
Procurar por ficheiros. |
-type d |
Procurar por directórios. |
Procurar ficheiros no Linux através da linha de comandos
O comando find pode filtrar uma hierarquia de directórios com base em quando um ficheiro foi modificado pela última vez. Por exemplo, o seguinte comando encontra qualquer ficheiro com a extensão .err que foi modificado nos últimos 7 dias:
find / -name "*err" -mtime -7
O comando exemplo retorna a seguinte saída:
/home/username/directory_3/example.err/home/username/username/example.err/home/username/username/directory_2/example.err/home/username/username/directory_1/example.err/home/username/username/directory_1/subdirectory_1/example.err
Utilizar o Grep para encontrar ficheiros no Linux usando a linha de comandos
O comando find só é capaz de filtrar a hierarquia de directórios com base no nome e metadados de um ficheiro. Se você precisar pesquisar baseado no conteúdo do arquivo, use uma ferramenta likegrep. Considere o seguinte exemplo:
find . -type f -exec grep "test" '{}' \; -print
Este comando procura cada objecto na hierarquia de directórios actual (.) que é um ficheiro (-type f) e depois corre o comando grep "test" para cada ficheiro que satisfaça as condições. Os arquivos que correspondem são impressos na tela (-print). Os suportes encaracolados ({}) são um espaço reservado para os resultados da procura de correspondência. Os {} estão entre aspas simples (') para evitar a entrega de grep um nome de ficheiro malformado. O comando -exec é terminado com um ponto-e-vírgula (;), que deve ser escapado (\;) para evitar interpretação pela shell.
O arquivo usado no exemplo (example.err) tem um texto dentro dele que diz “teste”. Quando você executa o comando de exemplo, você vê uma saída similar:
test./directory_3/example.errtest./example.errtest./directory_2/example.errtest./directory_1/example.errtest./directory_1/subdirectory_1/example.err
Grep identificou cada arquivo dentro do diretório de trabalho atual que contém a string “test”.
Nota
Antes da implementação do comando
findda opção-exec, você poderia gerar uma saída similar ao exemplo acima usando o comandoxargs:find . -type f -print | xargs grep "test"
Processar e encontrar arquivos usando o comando Find no Linux
A opção -exec executa comandos contra todos os objetos que combinam com a expressão find. Considere o seguinte exemplo:
find . -name "example.err" -exec chmod o+r '{}' \;
Isso filtra todos os objetos na hierarquia atual (.) para arquivos nomeados rc.conf e executa o comando chmod o+r para modificar as permissões dos arquivos do comando find.
O comando exemplo executa e executa a opção -exec no diretório raiz do processo find. Use -execdir para executar o comando especificado no directório onde a correspondência reside. Isto pode aliviar preocupações de segurança e produzir melhor desempenho para algumas operações.
As opções -exec ou -execdir rodam sem mais prompts. Se você preferir ser avisado antes da ação ser tomada, substitua -exec por -ok ou -execdir por -okdir.
Como encontrar e excluir arquivos usando a linha de comando Linux
Cuidado
Use esta opção com extremo cuidado.
Adicione a opção -delete ao final de uma expressão de partida para excluir todos os arquivos que coincidirem. Use esta opção quando tiver a certeza de que os resultados correspondem apenas aos ficheiros que deseja apagar.
No exemplo abaixo, find localiza recursivamente todos os ficheiros na hierarquia começando no directório actual e apaga todos os ficheiros que terminam com a extensão .err>
find . -name "*.err" -delete
Ainda tem algumas questões?
Junte-se à nossa Comunidade e coloque as suas questões para outros entusiastas do Linode e do Linux para o ajudar.
Perguntas Relacionadas: