find
é um comando para filtrar recursivamente objetos no sistema de arquivos baseado em um simples mecanismo condicional. Use find
para procurar um ficheiro ou directório no seu sistema de ficheiros. Usando a bandeira -exec
, os arquivos podem ser encontrados e processados imediatamente dentro do mesmo comando.,
Find Linux Files by Name or Extension
Use find
from the command line to locate a specific file by name or extension., O exemplo a seguir pesquisa *.err
arquivos /home/username/
diretório e sub-diretórios:
find /home/username/ -name "*.err"
Você deve ver uma saída semelhante no seu console:
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
Linux Comuns Encontrar Comandos e a Sintaxe
find
comando geralmente assume a seguinte forma:
find options starting/path expression
-
options
atributo controla o comportamento e método de otimização defind
processo., - o atributo
starting/path
define a pasta de topo ondefind
começa a filtrar. - The
expression
attribute controls the tests that search the directory hierarchy to produce output.
encontre 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 a localização procura pelo ficheiro em todo o disco., Por exemplo, você pode encontrar um arquivo chamado example.err
localizado no /home/username
diretório com o seguinte comando:
find -name example.err
Você deve ver uma saída semelhante:
./username/example.err
Encontre um Arquivo no Diretório Atual Usando o Comando Find
dê uma olhada no exemplo de estrutura de diretórios e arquivos. São referidos em todos os exemplos deste guia.,deseja localizar o arquivo example.err
dentro do diretório ou qualquer um de seus subdiretórios, você pode emitir o seguinte comando:
find . -name example.err
a Sua saída é semelhante ao seguinte:
./example.err./directory_1/example.err
A saída reflete directory_1
estrutura de diretório:
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err
Encontre Arquivos de Imagem em Linux, Usando a Linha de Comando
Referência a estrutura do arquivo na seção anterior, existe uma imagem com o nome image01.png
que está localizado na raiz (/
)s da estrutura de diretório.,
Para localizar o arquivo image01.png
, execute o seguinte find
comando que localiza todos os .png
arquivos armazenados dentro de /
diretório.
find -name *.png
Você deve ver uma saída semelhante:
./image01.png
Alterar o tipo de arquivo de imagem e procure por .jpg
arquivos dentro do diretório raiz (/
):
find -name *.jpg
A saída semelhante ao exemplo., Consulte a estrutura de pastas exemplo na secção anterior para ver a localização do ficheiro.
./web_files/unnamed.jpg
Encontre um Arquivo Vazio no Seu Diretório Usando a Linha de Comando
Para encontrar um arquivo vazio no seu diretório utilizando a linha de comandos, emita o seguinte comando:
find . -type f -empty
Se nenhum resultado for retornado, então não há um arquivo vazio dentro do seu diretório atual.
opções e optimizações para encontrar ficheiros no Linux usando a linha de comandos
a configuração predefinida para find
ligações ignoressymbolic., Se você quiser find
a seguir e retornar as ligações simbólicas, adicione o -L
opção para o comando, como mostrado abaixo:
find -O3 -L /var/www/ -name "*.html"
Este comando permite a otimização máxima (nível-O3
) e permite que find
para seguir links simbólicos (-L
). find
procura em toda a árvore de diretórios abaixo de /var/www/
para arquivos que terminam com .html
.,
find
optimiza a sua estratégia de filtragem para aumentar o desempenho. Três selecionáveis pelo usuário níveis de otimização são especificados como: -O1
-O2
e -O3
. The -O1
optimization is the default and forces find
to filter based on filename before running all other tests.,
Optimization at the -O2
level priorize filename filters, as in-O1
, and then run all file-type filtering before proceeding with other resource-intensive conditions. Level -O3
optimization allowsfind
to perform the most severe optimization and reorders all tests based on their relative expense and the likely of their success.,
Command | Description |
---|---|
-O1 |
Filter based on filename first (default). |
-O2 |
File name first, then file-type., |
-O3 |
Permitir que o find automaticamente re-ordenar a pesquisa com base no uso eficiente de recursos e probabilidade. de sucesso |
-maxdepth X |
Pesquisa do diretório atual, bem como todos os sub-diretórios X níveis de profundidade. |
-iname |
Pesquisa sem considerar maiúsculas e minúsculas no texto., |
-not |
Return only results that do not match the test case. |
-type f |
Search for files. |
-type d |
Search for directories., |
Localizar Arquivos no Linux por Tempo de Modificação Usando a Linha de Comando
find
comando pode filtrar uma hierarquia de diretórios de base, quando um arquivo foi modificado pela última vez., Por exemplo, o comando a seguir localiza qualquer arquivo com o .err
extensão que foi modificado nos últimos 7 dias:
find / -name "*err" -mtime -7
O exemplo de comando retorna a seguinte saída:
Usar o Grep para Encontrar Arquivos no Linux Usando a Linha de Comando
find
comando só é capaz de filtrar a hierarquia de diretório baseado no nome de um arquivo e metadados. Se você precisar pesquisar com base no conteúdo do arquivo, use uma ferramenta likegrep., Considere o exemplo a seguir:
find . -type f -exec grep "test" '{}' \; -print
Este comando procura cada objeto no diretório atual hierarquia (.
) que é um arquivo (-type f
) e, em seguida, executa o comando grep "test"
para cada arquivo que satisfaz as condições. Os arquivos correspondentes são impressos na tela (-print
). Os Chavetas ({}
) são um substituto para os resultados de find match., {}
são colocados entre aspas simples ('
) para evitar a entrega de grep
um nome de arquivo malformado. -exec
comando é terminada com um ponto-e-vírgula (;
), que devem ser encerradas (\;
) para evitar a interpretação do shell.
O arquivo usado no exemplo (example.err
) tem texto dentro dele que diz “teste”., Quando executar o comando exemplo, verá um resultado semelhante:
Grep identificou todos os ficheiros dentro da pasta de trabalho actual que contém o texto “teste”.,
Nota
Antes de
find
comando de implementação de-exec
opção, você pode gerar uma saída semelhante ao exemplo acima, usando oxargs
comando:find . -type f -print | xargs grep "test"
Processo e Localizar Arquivos Usando o Comando Localizar no Linux
-exec
opção executa comandos em relação a cada objeto que corresponde ao find
expressão., Considere o exemplo a seguir:
find . -name "example.err" -exec chmod o+r '{}' \;
Esta filtros de cada objeto na atual hierarquia (.
) para arquivos com o nome rc.conf
e executa o chmod o+r
comando para modificar as permissões de arquivo de find
comando de resultados.
o comando exemplo executa e executa a opção -exec
na pasta raiz do processo find
. Use -execdir
para executar o comando indicado na pasta onde a correspondência reside., Isso pode aliviar as preocupações de segurança e produzir um melhor desempenho para algumas operações.
The -exec
or -execdir
options run without further prompts. Se preferir ser solicitado antes da tomada de ação, substitua -exec
com -ok
ou -execdir
com -okdir
.
como encontrar e apagar ficheiros usando a linha de comandos do Linux
precaução
Use esta opção com extrema precaução.,
adicione a opção -delete
ao fim de uma expressão de correspondência para remover todos os ficheiros correspondentes. Utilize esta opção quando tiver a certeza de que os resultados só correspondem aos ficheiros que deseja apagar.
No exemplo a seguir, find
recursivamente localiza todos os arquivos na hierarquia, começando no diretório atual e exclui todos os arquivos que terminam com .err
extensão:
find . -name "*.err" -delete
Ainda tenho algumas perguntas?,Junte-se à nossa comunidade e publique as suas perguntas para outros entusiastas do Linode e do Linux para o ajudar.
perguntas relacionadas: