■-atime +n | -n | n — Procura por arquivos que foram acessados há menos do que n (-n), mais do que n(+n) ou exatamente n (n) dias.
■-ctime +n | -n | n — Procura por arquivos que foram alterados há menos tempo do que n (-n), mais do que n (+n), ou há exatamente n (n) dias.
■-exec comando {} \; — Executa “comando” para cada arquivo achado pelo find.
■-name padrão — Especifica um nome de arquivo ou padrão a ser procurado. Suporta alguns caracteres curinga, que devem ser especificados entre aspas simples para não serem expandidos pelo shell.
■-iname padrão — Faz o mesmo que o parametro “-name”, porém ignora a diferença entre letras maisculas e minúsculas.
■-perm — Permissão (modo) do arquivo, especificado em octal.
■-type — Especifica um tipo de arquivo, podendo ser f para arquivo regular, d para diretório e l para link simbólico.
■-user usuario — Faz buscas por documentos os quais o “usuário” seja dono.
Limpa a pasta tmp de arquivos de dois dias.
O comando abaixo exibe arquivos modificados a mais de 7 dias (somente o nome e data)
find ~/ -mtime +7 -printf "%f %AD\n"
melhorando o desempenho do seu Desktop
A pasta ~/.thumbnails guarda miniatura de imagens para agilizar a visualização
mas quando tem muito thumbnail o que era solução passa a ser um problema, para resolver
find ~/.thumbnails -type f -atime +7
xargs rm -fbusca arquivos no path
find ${PATH//:/ } -iname "*admin*" -executable -type f
find ${PATH//:/ } -executable -type f -printf "%f\n" #exibe só o nomeEditar o arquivo mais recentemente criado
vim `find -type f -cmin -10
head -n1`doc ou odt?
find ~/ -iregex ".*\(doc\
odt\)"mais sobre expressões regulares com o find
find . -regextype posix-egrep -iregex '.*/.*teeworlds' -print0
xargs -0 rm -rf Para buscar por vários tipos de imagens
find -regextype posix-extended -regex '.*\.(jpg
png)'localizando arquivos de hoje
find . -type f -ctime -1Uma variação possível - Mostrando de forma detalhada
find . -type f -ctime -1 -lslocalizando arquivos modificados em um intervalo de tempo
find ./ -mtime +6 -mtime -8 -printlocalizando arquivos em um intervalo de tempo
•fonte: command-line-fu
find . -type f -newermt "3 years ago" ! -newermt "2 years ago"combinando o find com o xargs
find . -type f -maxdepth 1 -name '*.ext' -print0
\
xargs -0 comandocopiando estrutura de pastas (somente pastas)
(cd /home/user/source/; find -type d -print0)
xargs -0 mkdir -pAtribuindo propriedade
isto tem que ser feito como root
find ~ ! -user fulano -print0
xargs -0 chown fulano:fulanoOutra opção seria
chown -R fulano.fulano
melhorar desempenho do firefox
find ~ -name '*.sqlite' -exec sqlite3 '{}' 'VACUUM;' \;deletar diretórios vazios
find . -type d -empty -delete
find
adicionando extensão a arquivos
Eu tinha um monte de arquivos sem extensão e queria colocar
no final txt, segue a solução.
find ./ -maxdepth 1 -type f -print0
xargs -0 -i mv ./{} ./{}.txt
Procurando por um padrão no $PATH
find ${PATH//:/ } -iname "*pattern*"
Apagando somente arquivos de um tipo
find ./clipart -type f -iregex '.*\.[^svg]$'
xargs rm -fSe a intenção é apagar apenas
find . -name '*' -print0
xargs -0 rmlocalizando arquivos duplicados usando md5sum
find -type f -exec md5sum '{}' ';'
sort
uniq --all-repeated=separate -w 33
cut -c 35-outra opção
find "$@" -type f -print0
xargs -0 -n1 md5sum
sort --key=1,32
uniq -w 32 -d --all-repeated=separate
1) Find all files.
2) Pipe the filenames to xargs.
3) Which will run md5sum on each filename and pipe the output to sort.
4) Which will sort the output based on the first 32 characters (the checksum) and pipe the output to uniq.
5) Which will find the unique checksums by only looking at the first 32 characters. The options to the uniq command cause it to print each duplicate (and only duplicates) on a separate line.usando alternativas
find -iname *.doc -o -iname *.odt
find -atime +5 \( -name "*.o" -o -name "*.tmp" \)
find + tar
find /home/zago/guiaz -mtime -1 -type f -print
tar jcvf meusarq.tar.bz2 -T -
Localizando arquivos maiores que 3G
find . -type f -size +3G
xargs -I% du -sh %
find + rsync
rsync -avz -e ssh --files-from=<(find -mtime +30 -mtime -60) origem destino
find . -name "whatever.*" -print0
rsync -av --files-from=- --from0 ./ .
copiar arquivos
find /originalPath/ -iname \*.mp3 -print0
xargs -0 -i cp ./{} /destinationPath/
# ou
find . -name '*.mp3' -print0
xargs -i -0 cp {}
outro exemplo
find . -name "*.pdf" -print0
xargs -0 cp -ft downloads/Observe também a opção -u do comando cp que faz com que o cp
copie apenas se o arquivo copiado for mais novo, ou seja, se
no destino houver o mesmo arquivo que está sendo copiado, a cópia
só será efetivada se o arquivo de origem for mais novo.
Arquivos criados a menos de dez minutos e "-and -a" com extensão txt
find ~/ -cmin -10 -a -iname *.txt
find ~/ -size +500M
find ~ -size +10000 -a -iname *.pdf
arquivos com exatamente 1000 caracteres
find . -size 1000c
Arquivos entre 599 e 701 caracteres
find . -size +599c -and -size -701c
Buscando em dois diretórios htdocs e cfi-bin
find htdocs cgi-bin -name "*.cgi" -type f -exec chmod 755 {} ;
Contar quantos txt há em minha pasta pessoal "~/" (combinando com o comando wc)
find ~/ -iname *.txt
wc -l
Mostra todos os arquivos pdf que não sejam maiores que 2000 bytes
tudo que estiver após a exclamação será negado.
find ~/ -iname *.pdf ! -size +2000
Invertendo a lógica do comando acima no primeiro caso tirando a exclamação, no segundo invertendo o sinal de + para menos, veja:
find ~/ -iname *.pdf -size +2000
ou
find ~/ -iname *.pdf ! -size -2000
Procura pdf's de tamanho maiores que 2000 bytes e mostra somente o nome sem o caminho "basename"
find ~/ -iname *.pdf -a -size +2000 -exec basename {} ;
Procurar por arquivos de um usuário especifico
find / -user sergio
find . -user root
Busca com opções. No caso arquivos html ou htm
find ~/ ( -name *.htm -o -name *.html ) -atime +5
find ~/ -iregex '.*html?' -atime +5
**Observações importantes** mudar permissão somente em diretórios "-d"
find . -type d -exec chmod 755 {} ;
Note: chmod -R 755 ./* também aplica a modificação mas também pega arquivos
!!Usando o find com o xargs
Usando o parâmetro -exec ele executa cada vez que acha o arquivo, repassando via pipe "
" para o comando xargs o find faz primeiro as buscas tornando-se mais rápido.
find ~/ -type f -print
xargs rm -rf
find /originalPath/ -iname *.mp3 -print0
xargs -0 -i cp ./{} /destinationPath/
Procure no diretório atual "." arquivos "f" imprima a lista "-print" filtre com o egrep ignorando maiúsculas e minúsculas "i" a "expressao".
find . -type f -print
xargs egrep -i "expressao"
Procurando todos os mp3 e exibindo o espaço ocupado por eles
find . -name \*.mp3 -print0
xargs -0 du -ch
Encontrando arquivos que não contenham extensão .c ou .o
find ~/docs -type f
egrep -v '.[oc]'
Qual a diferenca entre os comandos abaixo?
% find . -user queiroz -exec ls {} ;
% find . -user queiroz -print
xargs ls
find /tmp -atime +7 -type f -a -user $USER
xargs rm -rf
find /tmp -atime +7 -type f
xargs rm -f
Procura todos os arquivos suid e setgid executables:
find / ( -perm -4000 -o -perm -2000 ) -type f -exec ls -ldb {} ;
!!Redirecionando o erro padrão "2>/dev/null" para desviar as mensagens
de erro por acesso não root
find / -type f -name dummy 2>/dev/null
!!Parâmetros
-ctime
-mtime
-atime
-cmin
-amin
-mmin
-user
-nouser
-uid
-gruop
-gid
-and ou -a
-or ou -o
-size
-name
-iname
!!Usando ''printf''
O argumento -printf pode receber vários parâmetros
find ~/ -iname *.txt -printf %f\n "\n faz quebra de linha"
These are used the most:
%p imprime o nome do arquivo com o caminho
%m permissions of file, displayed in octal.
%f imprime o nome do arquivo sem o caminho
%g name of the group the file belongs to.
%G gid
%U uid
%h display name of directory file is in, filename isn't included.
%u username of the owner of the file
%c imrprime -ctime
%a tempo de acesso
%m imprime modo de permissão (formato octal)
%A(caractere) - devolve o "atime" (tempo de acesso)
%AD imprime a data tipo dia/mes/ano (data de acesso)
%AH imprime a hora
%AT /hh/mm/ss
%A+ data e tempo separados pro "+"
%Ax mm/dd/aaaa
find ~/ -iname *.txt -printf "%f %Ax %AT \n"
O comando acima exibe arquivos assim:
nome data hora
serii.txt 04-01-2007 12:42:07
%C(caractere) "ctime"
%T(caractere) "mtime"
Um último exemplo
find . -iname *.txt -printf "%p %m %AA %Ad de %AB de %AY %AX\n" isto retorna algo como:
/caminho/leia-me.txt 644 sexta 23 de junho de 2006 10:30:53
Para imprimir o nome do arquivo com o modo de permissão octal use
find ~ -iname *.txt -printf "%p %m\n"
acrescentando o parâmetro %a retorna o ultimo acesso de acordo com "-ctime"
find ~ -iname *.txt -printf "%p %a %m\n"
printf com os parâmetros "%p %m %Ax\n" retorna algo como
/caminho/leia-me.txt 644 23/06/06
printf com os parâmetros "%p %m %g %u %Ax\n" retorna algo como
/caminho/leia-me.txt usuario grupo 644 23/06/06
-printf "%f %u %g %m %Ax %AX\n" veja detalhes abaixo
%f nome sem o caminho
%u usuário
%g grupo
%m modo de permissão
%Ax dada de acesso no modo dd/mm/aa
%AX hora de acesso do tipo 18:15:23
\n quebra de linha
!!Usando Expressões regulares
$ find . -regex './ch0[1-2]_0[1-3].*'
./ch01_01.html
./ch01_02.html
./ch02_01.html
./ch02_02.html
./ch02_03.html
How do I search for files, then do something with the result?
* Find all .conf files, then search through them to see if they contain any IP addresses, then print the filename, line number and the line containing the address
find /etc -name *.conf -exec grep -Hn '[0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*' {} ;
!Fazendo um backup
tar -zcvf ultimamod.tar.gz `find . -mtime -1 -type f -print`
!Outros exemplos
Localizar todos os arquivos do tipo txt gerados nos últimos 20 minutos, menos os cookies do navegador, que são cosntantemente gerados e não devem ser buscados
find ~/ -iname *.txt -cmin -20
grep -v "cookies"
Usando expressões regulares
find . -regex './ch0[1-2]_0[1-3].*'
./ch01_01.html
./ch01_02.html
./ch02_01.html
./ch02_02.html
./ch02_03.html
Limpando miniaturas de imagens no nautilus
find ~/.thumbnails -type f -atime +7 -exec rm {} ;





Vale ressaltar que isso é uma grande falha de segurança do Windows, que sem logar no sistema se consegue chamar qualquer executável, deixando assim todo o sistema operacional vulnerável.


7) Caso deseje mudar a senha utilizada pelo administrador do sistema, basta digitar a frase sudo chntpw SAM.



6. Logo após será aberta a janela de Contas de usuário do sistema operacional. Para mudar a senha de acesso, basta selecionar o usuário desejado e em seguida clicar na opção “Redefinir senha”;
7. Na janela que surge, basta digitar duas vezes a senha desejada e clicar em “OK”. Pronto, agora você já pode realizar o login no computador com a nova senha configurada;
8. Não se esqueça de realizar novamente o login da máquina através do Linux e restaurar o nome dos arquivos modificados para seu valor original. Caso contrário, podem ocorrer problemas durante a utilização do Windows, principalmente quando for necessário acessar o prompt de comando do sistema.