find [caminho] [expressão]
Descrição
Este comando pesquisa arquivos em uma hierarquia de diretórios.
Algumas Opções
- -daystart : medem o tempo do início do dia ou de até 24 horas atrás.
- -depth : processa o conteúdo de cada diretório antes do diretório em si.
- -follow : resolve as ligações simbólicas.
- -help: imprime um resumo do uso das linhas de comando de find e finaliza.
- -inum n : acha arquivo com inode n.
- -maxdepth n : desce no máximo em n níveis (um inteiro não negativo) de diretórios sob os argumentos da linha de comando. A opção “-maxdepth 0” significa a aplicação dos testes e ações somente nos argumentos da linha de comandos.
- -mindepth n : não aplica qualquer teste ou ação a níveis menores que n níveis (um inteiro não negativo). A opção “-mindepth 1” significa testar todos os arquivos exceto os argumentos da linha de comandos.
- -version : lista o número da versão do comando find e finaliza.
- -xdev : não desce diretórios em outros sistema de arquivos.
Alguns Testes
- -amin n : arquivo foi acessado há n minutos.
- -atime n : procura por arquivos acessados há n dias.
- -cmin n : o status do arquivo foi alterado em até n minutos atrás.
- -cnewer arq : o status do arquivo foi alterado mais recentemente do que arq foi modificado.
- -ctime n : o status do arquivo foi mudado nos últimos n dias.
- -empty : o arquivo está vazio e é ou um arquivo regular ou um diretório.
- -gid n : o GID (Group Identification) do arquivo é n.
- -group gname : arquivo pertence ao grupo gname (pode-se também usar aqui o GID do grupo).
- -inum n : procura por arquivo com inode n.
- -mmin n : os dados dos arquivos foram modificados há n minutos.
- -mtime n : os dados foram modificados em até n dias atrás.
- -name arquivo : procura pelo arquivo especificado.
- -path padrão : define o padrão do caminho do arquivo.
- -perm : procura por uma determinada permissão de acesso.
- -size n[bckw] : procura por arquivos que tem n unidades de espaço. Ao usar + (-) antes de n procura-se por um arquivo maior (menor) que n. As unidades são:
- b – blocos de 512 bytes (padrão);
- c – bytes;
- k – kilobytes;
- w – palavras de 2 bytes.
- -type tipo : procura arquivos de um determinado tipo. São tipos possíveis:
- b – blocos especiais (buffer)
- c – caracteres especiais
- d – diretórios
- p – conector definido (FIFO)
- f – arquivo regular
- l – ligação simbólica
- s – socket
- -uid n : o UID do dono do arquivo é igual a n.
- -user nome : arquivo pertence ao usuário especificado em nome (pode-se também usar aqui o UID do dono).
O argumento n dos testes acima pode assumir:
- +n : valores maiores que n.
- -n : valores menores que n.
- n : valor exatamente igual a n.
Algumas Ações
- -exec comando : executa comando se o status de saída zero for retornado. Todos os argumentos para find serão considerados como argumentos do comando até que um argumento consistido por ‘;’ seja encontrado.
- -fprint arq : verdadeiro; lista o nome completo em um arquivo arq. Caso arq não exista quando find está sendo executado, ele será criado; caso ele exista, será recriado sem conteúdo.
- -print : verdadeiro; imprime o nome completo do arquivo na saída padrão, seguido de nova linha.
- -prune : caso -depth não seja informado, será verdadeiro; não descendo a partir do diretório atual. Caso -depth seja informado, será falso e não terá efeito.
Operadores
Listados em ordem de precedência decrescente:
- ( expr ) – força a precedência.
- ! expr – verdadeiro se expr for falsa.
- -not expr – o mesmo que ! expr.
- expr1 expr2 – a expr2 não será avaliada se expr1 for falsa.
- expr1 -a expr2 – o mesmo que expr1 expr2.
- expr1 -and expr2 – o mesmo que expr1 expr2.
- expr1 -o expr2 – expr2 não é avaliada se expr1 for verdadeira.
- expr1 -or expr2 – o mesmo que expr1 -o expr2.
- expr1 , expr2 – expr1 e expr2 são avaliadas.
Exemplos
- Para procurar o arquivo teste.tex no diretório atual e em todos subdiretórios abaixo do diretório atual, digite
find -name teste.tex
- Para procurar o arquivo teste.tex a partir do diretório Linux que é um subdiretório do diretório atual, basta digitar
find -path ‘./Linux/*’ -name teste.tex
- Para procurar o arquivo teste.tex a partir do diretório /home (~/) descendo no máximo 3 níveis de diretórios, entre com
find ~/ -maxdepth 3 -name teste.tex
- Para listar todos os arquivos encontrados a partir do diretório corrente exceto os arquivos que estão no diretório testes ou em algum dos seus subdiretórios, use o comando abaixo.
find . -path ‘./testes’ -prune -o -print
- Para listar os arquivos com mais de 1000k de tamanho a partir do diretório atual:
find . -size +1000k
- Para localizar os arquivos com permissão SUID, digite
find / -perm -4000
- Para localizar os arquivos com permissão SGID, basta digitar
find / -perm /g=s
- Para localizar os arquivos com permissão sticky bit, entre com
find / -perm -1000
- Use a opção atime para localizar programas novos ou acessados com mais frequência. Por exemplo, o comando
find /etc -atime -1
lista os arquivos do diretório /etc que foram acessados há um dia ou menos, enquanto o comando
find ~/ -atime +10
lista os arquivos, a partir do diretório /home do usuário, que foram acessados pela última vez há 10 dias ou mais.
- Para procurar por todos os links e os imprimir na saída padrão, digite
find / -type l
- O comando
find . -user aluno1 -exec chown aluno2 {}
altera o dono (veja comando chown) de todos os arquivos e subdiretórios a partir do diretório corrente de aluno1 para aluno2.
Observações
- O uso do comando find, sem argumentos, faz com seja exibida a lista de todos os arquivos que ficam hierarquicamente abaixo do diretório corrente.
- O comando locate lista os arquivos cujos nomes coincidem com o padrão informado.
- O comando whereis lista a localização de programas binários, fontes e documentação.