É fácil achar com o 'find'!
Há muito tempo eu vejo queixas de usuários dos diversos unices (linux,bsd,unix..) em achar arquivos e diretórios ‘perdidos’, para mim isso nunca foi muito difícil porque sempre usei o comando ‘find’, eu achava que todo mundo conhecia pelo o menos sua sintaxe básica de pesquisa mas tenho visto muita gente que usa unices e literalmente perdem arquivos por todo canto do sistema, tendo em vista essa idéia resolvi escrever um pouco aqui sobre como utilizar este comando no linux:
Então o que é o find?
Simples! Uma ferramenta para console (modo texto, sem gráfico) que lhe dá oportunidade de fazer pesquisas e alterações de acordo com seus resultados.
Como ele faz isso?
Ele usa as funções dos sistemas de arquivos que você têm instalado nas suas partições e acha arquivos de acordo com suas opções além de realizar ações com os seus resultados.
Chega de conversa, me mostra como posso utilizar ele?
Vejamos:
$ find /home -name passagens.txt
(procura o arquivo ‘passagens.txt’ (com case sensitive) no diretório /home)
$ find /home -iname "banc*os"
(procura no /home arquivos que contenham inicio ‘banc’ + qualquer coisa + final ‘os’ SEM case sensitive, podendo então ser: Bancarios.txt, bancos.txt, baNcarios.txt, etc..)
$ find /tmp -name "*.tar.gz"
(acha todos os arquivos que terminam com a extesão .tar.gz em /tmp)
$ find /usr/share/apps/konqueror -mtime +1
(procura dentro de /usr/share/apps/konqueror arquivos modificados em 1 dia.)
$ find /etc/ -atime +1 \! -name '*rc'
(lista arquivos dentro da pasta /etc que foram acessados há 1 dia mas que não contenham como final de nome de arquivo ‘rc’)
Ok Mulatinho! Eu me convenci que o ‘find’ é bom mesmo, mas você havia dito que ele além de pesquisar arquivos executava ações nos seus resultados, como seria uma coisa assim?
$ find /home/usuario -type d -exec du -hs '{}' \;
(lista todos os diretorios dentro de /home/usuario e com o comando ‘du -hs’ mostra o tamanho destes diretorios na saida da tela.)
$ find /opt -iname "*.tgz" -exec cp '{}' /bakup \;
(acha todos os arquivos que terminem com a extensão .tgz dentro de /opt e os copia para dentro do diretório /bakup, note que a expresão ‘{}’ indica o resultado da pesquisa, por isso voce pode manipula-la com varios comandos de acordo com suas sintaxes.)
E então, o ‘find’ é ou não é necessário para o usuário final e principalmente para o administrador de sistemas? Lembrando que além do ‘find’ há também quem goste do locate que exige um base de dados indexada dos arquivos do sistema operacional para pesquisar arquivos, mas isso é uma outra história…