Linux Kamarada

Dica: comando para listar apenas os números das fotos

Eu precisava listar fotos que estavam em uma pasta, mas apenas os números delas. As fotos estavam nomeadas como saíram da câmera: IMG_7565.JPG, IMG_7568.JPG, IMG_7571.JPG… Eu precisava apenas dos números: 7565, 7568, 7571… a pasta tinha apenas 30 fotos, eu poderia em poucos minutos digitar os números um a um. Mas como bom usuário de Linux que sabe o quão poderoso esse sistema é, gastei alguns poucos minutos pesquisando um comando de terminal que poderia fazer isso para mim de forma automática, exata, sem risco de erros de digitação. Encontrei e vim aqui compartilhar.

Para os apressados, aqui está o comando que eu usei na pasta das fotos:

1
find . -type f -printf '%f\n' | grep -o '[0-9]\+' | sort

Como cheguei a esse comando? Na verdade, foi muito simples. Eu já sabia que existia o comando find (“encontrar”, em inglês), que permite pesquisar arquivos em pastas. Então, eu pesquisei no Google:

linux find imprimir apenas os números

A visão geral criada por IA me trouxe algumas sugestões de comandos, dentre as quais:

Para extrair todos os grupos de números dos nomes dos arquivos

Se os seus nomes de arquivo contêm texto e números misturados (ex: arq_123_abc_456.txt) e você quer extrair apenas os números, você pode canalizar a saída do find para o grep com a opção -o (imprimir apenas a parte correspondente) e uma expressão regular:

1
find . -type f -printf '%f\n' | grep -o '[0-9]\+'
  • find . -type f -printf '%f\n': Lista apenas os nomes dos arquivos no diretório atual.
  • | grep -o '[0-9]\+': Envia a saída para o grep, que extrai e imprime apenas sequências de um ou mais dígitos ([0-9]\+).

Era exatamente o que eu precisava. Do aplicativo Arquivos, abri a pasta com as fotos no Console (terminal), e rodei o comando sugerido pela IA do Google. O resultado foi quase perfeito:

1
2
3
4
5
6
7606
7596
7661
7654
7655
...

Eu percebi que os números estavam fora de ordem. Felizmente, eu sabia da existência do comando sort (“ordenar”), então só fiz acrescentar um pipe para ele no final, chegando ao comando completo que apresentei no início:

1
find . -type f -printf '%f\n' | grep -o '[0-9]\+' | sort

Agora sim:

1
2
3
4
5
6
7565
7568
7571
7572
7577
...

O Linux pode ser um sistema bastante poderoso se você sabe usá-lo. Claro, ninguém sabe de tudo, como eu não sabia dessa combinação de comandos que acabei usando para resolver meu problema. Mas hoje temos a inteligência artificial que pode nos ajudar a descobrir o que ainda não sabemos, nossa limitação passa a ser saber fazer a pergunta certa para ela. E aqui cabe o ditado “até para perguntar, é preciso saber”. Por isso, vale a pena estudar nem que seja minimamente como usar o terminal e os principais comandos.

Você já resolveu algum problema de forma criativa usando scripts ou comandos no terminal? Conte sua história nos comentários!

Me paga um café?
Se você gostou muito, se foi muito útil pra você, será que vale um café? Se quiser, você pode "me pagar um café" pelo PayPal ou contribuir com o projeto de outras formas.

Comentários

Sobre

O Projeto Linux Kamarada visa divulgar e promover o Linux como um sistema operacional robusto, seguro, versátil e fácil de usar, adequado para o uso diário seja em casa, no trabalho ou no servidor. Os focos do projeto são principalmente distribuição e documentação.

Anúncios

Facebook

Autor