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

Enable local-to-anchors tables in PF rules

In a recent post to tech@ titled let's make pf(4) anchors and tables better friends (possibly originating at the ongoing hackathon) Alexandr Nedvedicky (sashan@) introduced code to enable creating local tables inside anchors in pf(4) rulesets: Date: Sa…

via OpenBSD Journal 2024-07-14 15:42

My fears about AI are not what you think

A clip from a longer stream VOD where I run through my fears with the AI industry

via Xe Iaso's blog 2024-07-08 00:00

WireGuard and Linux network namespaces

# Introduction This guide explains how to setup a WireGuard tunnel on Linux using a dedicated network namespace so you can choose to run a program on the VPN or over clearnet. I have been able to figure the setup thanks to the following blog post, I enh…

via Solene'% 2024-07-04 00:00

Generated by openring