Artigos

Prompt do Linux: O comando find

Continuando a série de artigos “Prompt do Linux”, hoje trataremos do comando find.

Sua utilidade principal é encontrar arquivos dentro de um sistema de arquivos. Há diversos critérios que você pode usar para a busca: nome, tipo, data de modificação, tamanho, proprietário, etc. Você pode especificar o local da pesquisa (quando não informado, a pesquisa ocorre no diretório atual e seus subdiretórios) e pode também combinar critérios de pesquisa. Vamos a alguns exemplos.

Buscas por nome
– Encontrar arquivos que terminem com “mdb” no diretório atual e subdiretórios:
$ find -name '*mdb'
– Encontrar arquivos que contenham “Avaliação” em qualquer parte do nome, independente da casa (maiúsculas/minúsculas), no diretório atual e subdiretórios:
$ find -iname '*avaliação*'
– Encontrar links que apontam para arquivos que contenham “Informática” no nome, no diretório /home:
$ find /home -lname '*Informática*'
– Semelhante ao acima, porém ignorando a casa:
$ find /home -ilname '*Informática*'

Buscas por tipo
– Encontrar diretórios em /var que se chamem exatamente “samba”:
$ find /var -type d -name samba
– Encontrar arquivos em /home cujo nome termine em “.tmp”:
$ find /home -type f -name '*.tmp'

Buscas por datas
– Encontrar arquivos e diretórios modificados em /home há menos de 3 dias (repare no sinal de menos):
$ find /home -mtime -3
– Encontrar arquivos que não são acessados há mais de 60 dias em /var (repare no sinal de mais):
$ find /var -type f -atime +60

Fora isto, pode-se executar comandos para cada resultado encontrado pelo find. Por exemplo: você poderia trocar a permissão de cada arquivo importado, ou imprimi-lo, ou executar qualquer outra coisa =) Basta acrescentar o parâmetro -exec ao fim do comando e especificar o que deve ser feito, usando ‘{}’ como nome do arquivo, e terminando o comando com \; – mais exemplos:

– Acrescentar o bit SGID aos diretórios embaixo de /home:
$ find /home/* -type d -exec chmod g+s '{}' \;
– Remover todos os arquivos em /home que terminem com .tmp:
$ find /home -type f -name '*.tmp' -exec rm -f '{}' \;

Até onde eu sei, somente um comando pode ser executado para cada resultado. Se quiser executar mais de um, crie um script que receba o arquivo como parâmetro, e execute as operações necessárias. Em seguida, use este script como sendo o seu comando a ser executado pelo find.

Use o comando find –help para consultar as outras opções possíveis.

Tags: Linux, Software

Você também vai gostar

Leia também!