Publicado por: Rafael Guedes | 7 fevereiro 2010

Dica: comando find

O comando find (do pacote findutils) é um robusto utilitário de pesquisas, o qual pode aplicar vários filtros avançados de busca por determinados arquivos, e ainda executar um comando para cada resposta positiva retornada ao find.


Por exemplo:
Estou sabendo de um caso de um usuário que está superlotando o espaço em disco de um servidor de arquivo com músicas, e então quero apagar todas. O find fará este trabalho:

#find /home/joao -iname *.mp3 -user joao -exec rm -f {} \;

SINTAXE BÁSICA:
find [Place to search] [Tests] [Action]

O find acima buscará no diretório /home/joao por arquivo de extensão mp3 (igorando case sensitive -iname), e para cada resposta positiva aos testes realizados o find tomará a ação de excluir o arquivo. O caractere “;” precisa ser escapado por “\” para não ser expandido pelo shell. A string {} refere-se ao atual retorno positivo dado ao find e pode ser colocada em qualquer posição dentro do comando executado.

Vários outros atributos podem ser testados na busca por arquivos. Abaixo segue uma lista dos que mais utilizo:

  • -atime: arquivos acessados a n | -n | +n dias.
  • -cime: status do arquivo modificado a n | -n | +n dias.
  • amin: arquivos acessados a n | -n | +n minutos.
  • cmin: status do arquivo modificado a n | -n | +n minutos.
  • mtime: dados do arquivo modificados a n | -n | +n dias.
  • mmin: dados do arquivo modificados a n | -n | +n minutos.
  • -user: arquivos de propriedade de um usuário específico.
  • -group: arquivos de propriedade de um grup específico.
  • -nogroup: arquivos de não pertençam ao grupo especificado.
  • -nouser: arquivos de não pertençam ao usuário especificado.
  • -perm: permissão do arquivo.
  • -size: arquivo que tenha um padrão de tamanho específico.
  • -type: tipo de arquivos (f arquivo regular, d diretório, l link simbólico).
  • -name: especifica o nome do arquivo a ser buscado (aceita coringas).
  • -iname: especifica o nome do arquivo a ser buscado (aceita coringas), ignorando case sensitive.

Outros exemplos:

#touch file{0,1,2,3,4,5,6,7,8,9}.{MP3,mp3}
# ls -1
file0.mp3
file0.MP3
file1.mp3
file1.MP3
file2.mp3
file2.MP3
file3.mp3
file3.MP3
file4.mp3
file4.MP3
file5.mp3
file5.MP3
file6.mp3
file6.MP3
file7.mp3
file7.MP3
file8.mp3
file8.MP3
file9.mp3
file9.MP3

Foram criados para teste arquivos com extensão *.mp3 e *.MP3. Agora será realizada a busca:

# find -uid 0 -name “*.mp3” -delete
# ls
file0.MP3  file1.MP3  file2.MP3  file3.MP3  file4.MP3  file5.MP3  file6.MP3  file7.MP3  file8.MP3  file9.MP3

Foi realizada uma busca por todos os arquivos de extensão *.mp3 e de propridade do root. Por fim foi tomada a ação de deleção dos arquivos.
Com o ls após o find vê-se que restaram os arquivos *.mp3 com caixa alta, pois a busca foi realizada com -name e não -iname.
Outro detalhe é que o local da busca foi omitido, neste caso find procura recursivamente apartir do diretório atual.

#chown :nogroup file[5-9].MP3
# ls -l file[5-9].*
-rw-r–r– 1 root nogroup 0 2010-02-07 19:09 file5.MP3
-rw-r–r– 1 root nogroup 0 2010-02-07 19:09 file6.MP3
-rw-r–r– 1 root nogroup 0 2010-02-07 19:09 file7.MP3
-rw-r–r– 1 root nogroup 0 2010-02-07 19:09 file8.MP3
-rw-r–r– 1 root nogroup 0 2010-02-07 19:09 file9.MP3

#
find ./ -iname “*.mp3” -group nogroup -cmin -10 -exec chown :root {} \;

Neste caso foi alterado o grupo proprietário dos arquivos file5.MP3 à file9.MP3, conforme confere-se listando os arquivos.
Após isto, foram buscados os arquivos com extensão *.mp3 (ignorando case sensitive) no diretório atual, pertencentes ao grupo nogroup e que tiveram o status modificado a menos de 10 minutos. Os arquivos que corresponderam aos atributos solicitados tiveram sua propriedade de grupo alterada novamente para o root.


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Categorias

%d blogueiros gostam disto: