find - Procurar arquivos e diretórios
Diferentes formas de procurar por um arquivo
Por nome
Com case-sensitive
find . -name "arquivos.txt"Sem case-sensitive
find . -iname "arquivos.txt"Por tipo
Pesquisar por diretório
find . -type dPesquisar por arquivo
find . -type dPor data
Arquivos mais antigos em n dias
find . -mtime +1Arquivos modificados em n dias
find . -mtime -1Lista todos os arquivos alterados em menos de 1 minuto
find . -mmin -1Lista todos os arquivos alterados nas últimas 24 horas
find . -newermt "-24 hours" -lsListar todos os arquivos alterados no dia 11/04/2020
find . -newermt "2020-04-11" -lsPor permissão
Procurar arquivos por permissão por modo octal
find . -perm -744Por proprietário
Procurar arquivos pertencentes a um usuário
find . –user andersonProcurar arquivos pertencentes a um grupo
find . –group admPor tamanho
Procurar arquivos com o tamanho exato de 10m
find . -size 10MProcurar arquivos com o tamanho superior a 10m
find . -size +10MCom menos de 10m
find . -size -10MPor arquivo vazio
Procurar por arquivos ou pastas vazias
find . -emptyfind . -type d -emptyfind . -type f -emptyUnidades de medida para utilizar com o find -size
| Carácter | Descrição |
|---|---|
c | bytes |
k | kilobytes |
M | megabytes |
G | gigabytes |
B | blocos de 512-byte |
Procurar por tipo
Procurar arquivos por tipo
find . -type f| Carácter | Descrição |
|---|---|
f | arquivo normal |
d | diretório ou pasta |
l | link simbólico |
c | dispositivos de caracteres |
b | dispositivos bloqueados |
Condicionais para combinar diferentes formas de pesquisa
and
find -name "*dog" -type f-and é o padrão, o comando acima é igual a find -name "*dog" -and -type f
or
find -name "dog" -or -name "cat"not
find -not -name "dog"group
find \( -name "dog" -or -name "cat" \) -type f\( e antes de \), caso o contrário ocorrerá um erro.Alias de condicionais
-o=-or-a=-and!=-not(Talvez precise escapar\!)
Executar ações com os arquivos encontrados
O find não seve somente como uma forma de procurar arquivos, ele também serve como um filtro para executar comandos.
Deletar arquivos encontrados
Devemos tomar cuidado com esse parâmetro use-o apenas em ocasiões que o arquivo sempre terá que ser apagando, sem existir o risco de perder informação.
find . -name "*.tpm" -deleteExecutar um comando para cada arquivo encontrado
Com o parâmetro -exec podemos executar um comando para cada arquivo encontrado ou para todos ao mesmo tempo.
Esse parâmetro, por padrão, substitui os caracteres {} com o caminho de cada arquivo encontrado ou com a lista de todos os arquivos encontrados.
No final do -exec sempre temos que utilizar \; ou +:
\;o comando será executado separadamente em cada arquivo encontrado.+o comando será executado uma única vez para todos os arquivos encontrados.
mkdir pata1 pasta2 pasta3 ou touch arquivo1.txt arquivo2.txt arquivo3.txt, são nesses casso que podemos utilizar o + no final do -exec, se for utilizado com um comando que não é compatível com esses exemplos o resultado não será o esperado.Irá executar o chmod em cada arquivo encontrado
find -name "*.php" -exec chmod 755 {} \;Irá executar o chmod uma única vez em todos os arquivos encontrados
find -name "*.php" -exec chmod 755 {} +;Outros
Limitar um número de subdiretórios
find . -maxdepth 1Exemplo prático
Procurar todos os arquivos .php e .phtml que não tem a permissão 755 e modificar a permissão para esse valor.
find . \( -name "*.php" -or -name "*.phtml" \) -type f -not -perm 0755 -exec chmod 755 {} \;