umgeher's changelog

find

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 exemplo1 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.


  1. Captain Beyond e’ uma banda sensacional. O disco com o proprio nome da banda para mim e’ o melhor de todos. E’ literalmente um post-deep-purple bem raiz. Viagem do inicio ao fim. Otima trilha para uma noite de soft coding. ↩︎

Articles from blogs I follow around the net

OpenBSD 7.7 Released

The OpenBSD project has announced OpenBSD 7.7, its 58th release. The new release contains a number of significant improvements, including but certainly not limited to: Multiple SMP improvements have been made. TCP output and TCP timers now run in parallel. Only TC…

via OpenBSD Journal 2025-04-27 18:30

Running repl commands in cider (emacs)

Ok, I will admit.. this took a while. But I have found a nice way of doing this. What is this? Well, let’s say let’s say that you have a command to start your server in user namespace. With this cool feature, now you can run this with a emacs command (or s…

via Lucas E M M. opinions 2025-04-23 19:46

Resistance from the tech sector

As of late, most of us have been reading the news with a sense of anxious trepidation. At least, those of us who read from a position of relative comfort and privilege. Many more read the news with fear. Some of us are already no longer in a position to read…

via Drew DeVault's blog 2025-04-20 00:00

Generated by openring