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

j2k25 - OpenBSD Hackathon Japan 2025 (rsadowski@)

Fresh from the just concluded j2k25 hackathon in Nara, Japan, Rafael Sadowski (rsadowski@) has published his report on his blog: Week 2: The j2k25 Japan Hackathon We arrived in Nara during the late afternoon. After checking into our hotel, goda@, my wife and I…

via OpenBSD Journal 2025-06-01 10:42

How to trigger a command on Linux when disconnected from power

# Introduction After thinking about BusKill product that triggers a command once the USB cord disconnects, I have been thinking at a simple alternative. => https://www.buskill.in BusKill official project website When using a laptop connected to power …

via Solene'% 2025-05-31 00:00

Improved (maybe) indenting on save

I realized that sometimes identing the whole buffer might not be the desired output. That because if the file is on different identation, your git commit might be hard to follow. Because of that I studied a bit emacs lisp and came up with similar idea. On …

via Lucas E M M. opinions 2025-05-30 11:30

Generated by openring