Aula 013 - Localizar arquivos linux [Comando find]
Índice:
- Sintaxe de comando
find
Linux - Localizar arquivos por nome
- Localizar arquivos por extensão
- Localizar arquivos por tipo
- Localizar arquivos por tamanho
- Localizar arquivos por data de modificação
- Localizar arquivos por permissões
- Localizar arquivos por proprietário
- Localizar e excluir arquivos
- Conclusão
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 atributopath…
define o diretório ou diretórios iniciais nos quais o find pesquisará os arquivos.O atributoexpression
é 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 comandofind
para seguir os links simbólicos.O/var/www
(caminho…) especifica o diretório que será pesquisado. A (expressão)-name "*.js
informa ofind
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 regulard
: diretóriol
: link simbólicoc
: dispositivos de caracteresb
: dispositivos de blocop
: 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
: bytesw
: palavras de dois bytesk
: KilobytesM
: MegabytesG
: 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:
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
.
Como extrair arquivo CAB usando ferramentas de linha de comando no Windows 10/8/7
Você pode descompactar um ou arquivos de gabinetes .CAB mais compactados usando ferramentas de linha de comando do Windows como expand.exe, makecab & extrac32.
Como liberar o RAM no Windows usando a linha de comando
Sempre quis liberar alguma RAM no Windows usando apenas uma linha de comando? Veja como você pode fazer isso, com um pequeno aplicativo legal.
Como remover arquivos e diretórios usando a linha de comando linux
Neste tutorial, mostraremos como usar o comando rm para remover arquivos e diretórios através de exemplos e explicações das opções rm mais comuns.