Android

Como encontrar arquivos no linux usando a linha de comando

Aula 013 - Localizar arquivos linux [Comando find]

Aula 013 - Localizar arquivos linux [Comando find]

Índice:

Anonim

O comando find é uma das ferramentas mais poderosas no arsenal de administradores de sistemas Linux. Ele procura por arquivos e diretórios em uma hierarquia de diretórios com base em uma expressão especificada pelo usuário e pode executar uma ação especificada pelo usuário em cada arquivo correspondente.

Você pode usar o comando find para procurar arquivos e diretórios com base em suas permissões, tipo, data, propriedade, tamanho e muito mais. Também pode ser usado em combinação com outras ferramentas, como grep ou sed .

Sintaxe de comando find Linux

A sintaxe geral para o comando find é a seguinte:

find

  • O atributo options controla o tratamento dos links simbólicos, das opções de depuração e do método de otimização.O atributo path… define o diretório ou diretórios iniciais nos quais o find pesquisará os arquivos.O atributo expression é composto por opções, padrões de pesquisa e ações separadas por operadores.

Para procurar arquivos em um diretório, o usuário que chama o comando find precisa ter permissões de leitura nesse diretório.

Vamos dar uma olhada no seguinte exemplo:

find -L /var/www -name "*.js"

  • A opção -L (opções) informa ao comando find para seguir os links simbólicos.O /var/www (caminho…) especifica o diretório que será pesquisado. A (expressão) -name "*.js informa o find para pesquisar arquivos que terminam com .js (arquivos JavaScript).

Localizar arquivos por nome

Encontrar arquivos pelo nome é provavelmente o uso mais comum do comando find . Para localizar um arquivo usando o nome, a opção -name seguiu o nome do arquivo que você está procurando.

Por exemplo, para procurar um arquivo chamado document.pdf no diretório /home/linuxize , você usaria o seguinte comando:

find /home/linuxize -type f -name document.pdf

Para executar uma pesquisa que não -iname maiúsculas de minúsculas, altere a opção -name com -iname :

find /home/linuxize -type f -iname document.pdf

O comando acima corresponderá a "Document.pdf", "DOCUMENT.pdf"..etc.

Localizar arquivos por extensão

Procurar arquivos por extensão é o mesmo que procurar arquivos por nome. Por exemplo, para encontrar todos os arquivos que terminam com .log.gz dentro do diretório /var/log/nginx , você pode usar:

find /var/log/nginx -type f -name '*.log.gz'

É importante mencionar que, ao usar o caractere curinga, você deve citar o padrão ou escapar do símbolo do asterisco * com barra invertida \ para que ele não seja interpretado pelo shell.

Para encontrar todos os arquivos que não correspondem ao regex *.log.gz você pode usar a opção *.log.gz . Por exemplo, para encontrar todos os arquivos que não terminam em *.log.gz você usaria:

find /var/log/nginx -type f -not -name '*.log.gz'

Localizar arquivos por tipo

Às vezes, pode ser necessário procurar tipos de arquivos específicos, como arquivos normais, diretórios ou links simbólicos. No Linux, tudo é um arquivo.

Para procurar arquivos com base em seu tipo, use a opção -type e um dos seguintes descritores para especificar o tipo de arquivo:

  • f : um arquivo regular d : diretório l : link simbólico c : dispositivos de caracteres b : dispositivos de bloco p : pipe nomeado (FIFO) s : socket

Por exemplo, para encontrar todos os diretórios no diretório de trabalho atual, você usaria:

find. -type d

O exemplo comum seria alterar recursivamente as permissões de arquivo do site para 644 e as permissões de diretório para 755 usando o comando chmod :

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

Localizar arquivos por tamanho

Para localizar arquivos com base no tamanho do arquivo, passe o parâmetro -size junto com os critérios de tamanho. Você pode usar os seguintes sufixos para especificar o tamanho do arquivo:

  • b : blocos de 512 bytes (padrão) c : bytes w : palavras de dois bytes k : Kilobytes M : Megabytes G : Gigabytes

O comando a seguir encontrará todos os arquivos de exatamente 1024 bytes dentro do /tmp :

find /tmp -type f -size 1024c

O comando find também permite procurar arquivos maiores ou menores que um tamanho especificado.

No exemplo a seguir, estamos pesquisando todos os arquivos com menos de 1MB dentro do diretório de trabalho atual. Observe o símbolo de menos antes do valor do tamanho:

find. -type f -size -1M

find. -type f -size +1M

Você pode até procurar arquivos dentro de uma faixa de tamanho. O comando a seguir encontrará todos os arquivos entre 1 e 2MB :

find. -type f -size +1M -size 21M

Localizar arquivos por data de modificação

O comando find também pode procurar arquivos com base em sua última modificação, acesso ou alteração de horário.

Assim como ao pesquisar por tamanho, use os símbolos de mais e menos para "maior que" ou "menor que".

Digamos que, alguns dias atrás, você modificou um dos arquivos de configuração dovecot, mas esqueceu qual deles. Você pode filtrar facilmente todos os arquivos no diretório /etc/dovecot/conf.d que termina com .conf e foi modificado nos últimos cinco dias com:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Aqui está outro exemplo de filtragem de arquivos com base na data da modificação usando a opção -daystart . O comando abaixo listará todos os arquivos no diretório /home que foram modificados há 30 dias ou mais:

find /home -mtime +30 -daystart

Localizar arquivos por permissões

A opção -perm permite procurar arquivos com base nas permissões de arquivo.

Por exemplo, para encontrar todos os arquivos com permissões exatamente de 775 dentro do diretório /var/www/html , você usaria:

find /var/www/html -perm 644

Você pode prefixar o modo numérico com menos - ou barra / .

Quando a barra / é usada como prefixo, pelo menos uma categoria (usuário, grupo ou outras) deve ter pelo menos os bits respectivos definidos para que um arquivo corresponda.

Considere o seguinte comando de exemplo:

find. -perm /444

O comando acima corresponderá a todos os arquivos com permissões de leitura definidas para usuário, grupo ou outros.

Se menos - é usado como prefixo, o arquivo deve corresponder a pelo menos os bits especificados. O comando a seguir procurará arquivos que tenham permissão de leitura e gravação para o proprietário e o grupo e sejam legíveis por outros usuários:

find. -perm -664

Localizar arquivos por proprietário

Para localizar arquivos pertencentes a um usuário ou grupo específico, use as opções -user e -group .

Por exemplo, para procurar todos os arquivos e diretórios pertencentes ao usuário linuxize , você deve executar:

find / -user linuxize

Aqui está um exemplo do mundo real. Digamos que você queira encontrar todos os arquivos pertencentes ao usuário www-data e alterar a propriedade dos arquivos correspondentes de www-data para nginx :

find / -user www-data -type f -exec chown nginx {} ;

Localizar e excluir arquivos

Para excluir todos os arquivos correspondentes, acrescente a opção -delete ao final da expressão de correspondência.

Verifique se você está usando esta opção apenas quando tiver certeza de que o resultado corresponde aos arquivos que deseja excluir. É sempre uma boa ideia imprimir os arquivos correspondentes antes de usar a opção -delete .

Por exemplo, para excluir todos os arquivos que terminam com .temp em /var/log/ você usaria:

find /var/log/ -name `*.temp` -delete Use a opção -delete com extrema cautela. A linha de comando find é avaliada como uma expressão e, se você adicionar a opção -delete primeiro, o comando excluirá tudo abaixo dos pontos de partida especificados.

Quando se trata de diretórios, o find pode excluir apenas diretórios vazios, assim como o rmdir .

Conclusão

Mostramos como usar o comando find com várias opções e critérios.

Este artigo deve fornecer uma compreensão fundamental de como localizar arquivos em seus sistemas Linux. Você também pode visitar a página do manual find e ler sobre todas as outras opções poderosas do comando find .

encontrar terminal