O comando find é um dos comandos usados no Linux para procurar ficheiros ou pastas, outro comando interessante é o locate.
find o-que-procurar critério o-que-fazer
Todos os argumentos são opcionais.
o-que-procurar - pode ser por exemplo o nome de um ficheiro ou de uma diretoria
critério -
Este comando possui diversas opções, testes, ações e operadores. É um comando muito poderoso, para saber mais consultar o manual (man find).
find . -name "nome-do-ficheiro"
find . -name "nome-do-ficheiro"-exec rm -rf {} \;
--> exec executa o comando que aparece a seguir
Procurar todos os ficheiros com a extensão odt e apresentar o resultado com o tamanho e a data em que os ficheiros foram alterados pela última vez
find . -name "*.odt" -exec ls -ld {} \;
find /home/manuel /home/maria -name Capitulo1.pdf -type f
find . -type f -name "nome-do-ficheiro-ou-pasta" -exec rm -f {} \;
O comando anterior procura apenas ficheiros se também quisermos procurar pastas basta eliminar a opção f. O comando seguinte procura e apresenta o nome da pasta transferências com todos os ficheiros e pastas que tem dentro
find Transferências -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
find . -type f -name "*.bak" -exec rm -f {} \;
find / -name ficheiro-para-apagar -exec rm -f {} \;
Apagar todos os ficheiros com o nome ficheiro-para-apagar e removê-los, pedindo confirmação ao utilizador
find . -type f -name "*.bak" -exec rm -i {} \;
setuid ("suid") e setgid são flags de direitos de acesso que podem ser atribuídos aos ficheiros e diretorias nos sistemas operativos tipo unix. São usados principalmente para permitir aos utilizadores executar ficheiros binários com privilégios elevados temporários de modo a poderem executar determinadas tarefas.
find / -perm +u=s
ou
find / -perm +4000
(Procurar ficheiro grandes / pequenos)
find / -type f -size +20000k
Semelhante mas mais bonito
find / -type f -size +20000k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
neste caso apresenta o nome dos ficheiros seguido do seu tamanho
(Procurar ficheiro muito pequenos)
find / -type f -size -1k
Semelhante mas mais bonito
find / -type f -size -1k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
este comando tal como está vai apresentar ficheiros com tamanho inferior a 1k. Se aplicarmos este comando a uma diretoria especifica, isso é quase o mesmo que encontrar ficheiros sem conteúdo.
(Procurar ficheiro com um tamanho superior a 1,0K e igual ou inferior a 2,0K)
find / -type f -size 2k
Semelhante mas mais bonito
find / -type f -size 2k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
Procurar na diretoria corrente, todos os ficheiros cujo nome não tem a extensão html
find . -type f -not -name "*.html"
Procurar na diretoria corrente (e todas as subdiretorias) todos os ficheiros com a extensão pdf, cujo conteúdo contenha a expressão "Literacia de Informação". Para ajustar o comando às minhas necessidades posso alterar pdf para outra extensão, por exemplo txt, tal como a cadeia de carateres a procurar, poderia ser por exemplo "Linux".
find . -type f -name "*.pdf" -exec grep -l "Literacia de Informação" {} \;
Combinar o comando grep com o comando find é uma boa forma de encontrar ficheiros com um conteúdo específico.
find . -name "*.tmp" -print | xargs rm -f
Ficheiros alterados na última hora (últimos 60 minutos)
find . -mmin -60
find . -mmin -60 \( ! -regex ".*/\..*" \)
O segundo comando mostra não mostra os ficheiros escondidos
Ficheiros alterados no último dia
find . -atime -1
find . -type f -iname “*.odt″ -exec rename “s/ /_/g” {} \;
Este comando procura todos os ficheiros com a extensão odt e no nome de cada ficheiro onde estiver um espaço substitui-o por um underscore (traço de sublinhado).
find . -name "educa*"
apresenta todos os ficheiros que começam com a palavra educa
find . -name "*cow" -print
apresenta todos os ficheiros que terminam com a palavra educa
find . -name "*cow*" -print
apresenta todos os ficheiros cujo nome inclui a palavra educa
Ver