Find e’ um otimo aliado, mas vejo que muita gente ao meu lado nao usa
ele com todo o potencial dele.
… keep it simple stupid, work smart not hard.
– some Unix guy…
find
historia
O find apareceu na versao 1 do AT&T UNIX e foi removido na versao 3 do
proprio. Um novo programa do mesmo nome foi escrito para o
“Programmer’s Workbench (PWB)” e foi lancado na versao 5 do AT&T
UNIX. E novamente foi rescrito para o 4.3BSD-Reno.
versoes
Eu uso OpenBSD, e meus exemplos sao todos usando a versado do
find que vem com ele. Caso voce use algum GNU/Linux e’ bem provavel
que alguns exemplos vao ter alguma mudanca nos argumentos, as vezes
para pior, as vezes para melhor. Por exemplo, no GNU Find Utilities,
voce pode usar o argumento size passando por exemplo G para
gigabyte. Recomendo sempre olhar o manual da sua versao.
name
Vamos comecar com o basico, vamos buscar todos os arquivos “.jpg” no
diretorio atual e seus filhos.
~> find . -name "*.jpg"
./krig/changelog/static/i/2016/NC6ZuZu.jpg
./krig/changelog/static/i/fun/ps2-vs-usb.jpg
./krig/changelog/static/i/cv/cv_00k.jpg
./krig/changelog/static/i/cv/cv_qt.jpg
./krig/changelog/static/i/cv/cv_uol.jpg
./krig/changelog/static/i/cv/cv_vb.jpg
./krig/changelog/static/i/cv/cv_vt.jpg
./krig/changelog/public/i/2016/NC6ZuZu.jpg
./krig/changelog/public/i/fun/ps2-vs-usb.jpg
type
Por default, o find vai sempre filtrar o name por arquivos, mas e'
sempre ideal manter claro que queremos filtrar por arquivos, para isso
adicionamos o type no comando.
~> find . -name "*.jpg" -type f
./krig/changelog/static/i/2016/NC6ZuZu.jpg
./krig/changelog/static/i/fun/ps2-vs-usb.jpg
./krig/changelog/static/i/cv/cv_00k.jpg
./krig/changelog/static/i/cv/cv_qt.jpg
./krig/changelog/static/i/cv/cv_uol.jpg
O type as seguintes opcoes…
- b -> block
- c -> character
- d -> diretorio
- f -> arquivos
- l -> link simbolicos
- p -> FIFO
- s -> socket
Usando qualquer uma dessas opcoes, o find ira’ retornar apenas o
type escolhido.
size
Agora vamos dizer que queremos todos os arquivos com um certo
tamanho… O find pode nos ajudar nisso tambem.
~/om> find . -type f -size +1024c -size -2048c
./C/Captain Beyond - Captain Beyond (1972; 1997) [FLAC]/info.txt
./C/Captain Beyond - Captain Beyond (1972; 1997) [FLAC]/Captain Beyond - Captain Beyond.cue
Nesse exemplo estou buscando por todos os arquivos que tenham entre
1024bytes e 2048bytes.
*time
Ok, ja’ conseguimos pegar arquivos pelo nome, tamanho e tipo… Que
tal pela data de acesso (atime), modificacao (mtime) e mudanca
(ctime) dele?
- atime -> ultima vez que o arquivo foi aberto/lido
- ctime -> ultima mudanca de metadados do arquivo, como por
exemplo o path e permissao
- mtime -> ultima modificacao no conteudo do aqruivo
Funciona do mesmo modo que o size… Exemplo:
find . -type f -atime +10 -atime -15
Ou arquivos que nao foram abertos a mais de um ano…
find . -type f -atime +365
user / group
Arquivos que pertencem a um user? O find consegue trazer para nos tambem…
find . -user umgeher
O mesmo funciona para group.
man
O find tem N opcoes para uso. Leia o manual dele. Vai facilitar a sua
vida na hora de manipular uma grande quantidade de arquivos.
/comments ~umgeher/changelog@lists.sr.ht?Subject=Re: golang: reverse shell
/permalink https://umgeher.org/posts/2022/03/golang-reverse-shell.html