De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Mais usos do comando find
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 02 de Setembro de 2003
Em sistemas *nix, uma ferramenta de enorme funcionalidade é o comando
find.
O comando find aceita diversas diretivas que lhe instruem sobre o que
pesquisar em um sistema de arquivos. Arquivos maiores que um tamanho
pré-determinado, que tenham sido modificados ou acessados até determinada
data, etc.
Vamos então ver uma forma pouco usada, mas que pode ter sua utilidade.
Eu criei em um diretório um arquivo estranho. Deu um trabalho para criar
o arquivo, pois ele continha uma marca de tabulação em seu nome.
$ ls
a ?a b c d e
$ ls | cat -v
a
a
b
c
d
e
Bom, agora eu quero remover este arquivo. Existem várias maneiras de
se fazer isto, mas eu quero demonstrar uma que use o recurso do comando
find que eu quero demonstrar. Quem sabe um dia alguém ache um exemplo
mais inteligente :-)
$ ls -i
3358935 a 3358929 ?a 3358930 b 3358931 c 3358932 d 3358933 e
O comando ls irá exibir os i-nodes (index nodes) dos arquivos que
são informações. i-nodes são estruturas de dados que indicam ao sistema
operacional a localização física dos arquivos.
De posse desta informação, eu posso fazer:
find . -inum 3358929 -ok rm '{}' \;
O parâmetro "-ok" é uma verificação de segurança para garantir que nada
saia errado. Ele vai buscar o arquivo cujo i-node seja igual a 3358929
e removê-lo.
Caso eu tenha certeza absoluta do que estou fazendo uma alternativa é usar
a diretiva "-exec", que executa o comando diretamente:
find . -inum 3358929 -exec rm '{}' \;
A Dicas-L já publicou mais algumas dicas sobre o comando find. Veja
também: