Tenho experimentado com inteligência artificial e recentemente comecei a mexer com o Claude Code. Para quem está começando, como eu, indico um vídeo excelente no YouTube do canal Hashtag Programação assim como o guia Claude How To, que é um repositório no GitHub com vários exemplos de como extrair o melhor do Claude Code.
O Claude Code é uma ferramenta de codificação agêntica da Anthropic que roda diretamente no terminal, mas também está disponível na forma de extensões para diversos IDEs (inclusive uma extensão para o VS Code), app desktop e navegador. O Claude Code lê e entende toda a base de código para executar tarefas de forma autônoma, como implementar novas funcionalidades, corrigir bugs, refatorar, explicar trechos complexos, editar arquivos, executar comandos e até lidar com fluxos de trabalho do Git. Tudo isso o usuário pode pedir por meio de comandos em linguagem natural. Assim, o Claude Code funciona como um assistente de desenvolvimento que age diretamente sobre o projeto em vez de apenas sugerir código.
Devo observar que, diferente do GitHub Copilot que tem um plano gratuito, o Claude Code não tem plano gratuito nem “30 dias grátis para testar”. Até para experimentar o Claude Code você já precisa assinar um plano. O mais barato, o plano Pro, pode ser contratado por 20 dólares por mês (algo como 110 reais, na cotação atual). Felizmente, para muitos, esse valor deve caber no orçamento. Depois, se decidir que vai continuar usando o Claude Code, é possível mudar para o pagamento anual com desconto.
Dito isso, quero compartilhar um uso que fiz do Claude Code para criar para mim um script simples para resolver um problema do dia-a-dia.
O problema a ser resolvido: tenho duas pastas com arquivos duplicados, mas também com arquivos que só existem em uma ou na outra. Quero separar os arquivos que estão duplicados dos que só existem em uma pasta ou na outra para facilitar a organização que farei depois dessas pastas.
Para ilustrar a situação, criei duas pastas e coloquei algumas fotos nelas, como nas imagens a seguir.
Perceba que:
foto1.jpgefoto2.jpgsão os mesmos arquivos (duplicados) napasta1e napasta2;foto3.jpgefoto5.jpgsó existem napasta1;foto4.jpgefoto6.jpgsó existem napasta2; efoto7.jpgefoto8.jpgexistem em ambas as pastas, mas estão na vertical napasta1e na horizontal napasta2, logo, são arquivos diferentes.
Depois de criar uma conta no Claude, assinar o plano, instalar a extensão no VS Code e entrar com minha conta na extensão, detalhei para o Claude Code o script que eu queria:
Tenho duas pastas
AeBcom arquivos duplicados, mas pode haver arquivos que só existam emA, assim como arquivos que só existam emB. Escreva um shell script que receba os caminhos deAeBcomo argumentos. Para cada arquivoXemA(portanto, caminhoA/X), verifique a existência de um arquivoB/X(com o mesmo nomeXna pastaB). Se for encontrado, compare as somas de verificação deA/XeB/X. Se forem iguais, movaA/XparaA/duplicados/X(crie a pastaA/duplicadoscaso não exista) eB/XparaB/duplicados/X(da mesma forma, crie a pastaB/duplicadoscaso não exista). Se não forem iguais, movaA/XparaA/unicos/XeB/XparaB/unicos/X. Se não for encontrado um arquivoB/X, movaA/XparaA/unicos/X. Ao final, se restarem arquivos emBque não estejam nas pastasB/duplicadosnemB/unicos, mova-os para a pastaB/unicos. Quando o script estiver pronto, teste-o com as pastaspasta1epasta2na pasta atual.
Depois de “pensar” por um tempo e escrever o script, o Claude Code me pediu permissão para executar alguns comandos no meu computador, a fim de tornar o script executável e executá-lo:
Ao final, ele avisou que o teste do script foi bem sucedido:
Eis o script que ele gerou (compartilho na íntegra no final):
Depois de rodar o script, as pastas ficaram assim:
Perceba que:
foto1.jpgefoto2.jpgforam movidas para uma pasta chamadaduplicadoscriada tanto napasta1quanto napasta2;foto3.jpgefoto5.jpgforam movidas para umaunicoscriada napasta1;foto4.jpgefoto6.jpgforam movidas para uma pastaunicoscriada napasta2; efoto7.jpgefoto8.jpgforam movidas para a pastaunicostanto napasta1quanto napasta2;
Ou seja, realmente, o script funcionou exatamente como eu queria que ele funcionasse.
Uma vez que ele passou no teste com essas pequenas pastas com poucos arquivos selecionados, usei ele para o que de fato eu queria:
Depois de tudo, excluí uma das pastas com arquivos duplicados e juntei todos os arquivos em uma pasta só, que terminou com aproximadamente 2.800 arquivos (entre fotos e vídeos) totalizando aproximadamente 23 GB. Um baita teste “em produção”!
E é claro que o Claude Code pode ser usado para muito mais do que escrever simples scripts. Muito tenho ouvido falar de vibe coding e estou experimentando isso também com um projeto maior. Eu gostava de jogar o jogo Copas do Windows 98 (quer “reviver” esse sistema, jogar esse jogo e ter um momento de nostalgia hoje mesmo? Veja esse tutorial) e havia um jogo semelhante no Linux que era o GNOME Hearts, só que ele não recebe atualizações há mais de uma década, e rodá-lo em sistemas atuais não é impossível, mas também não é tão simples. Auxiliado pelo Claude Code, estou reescrevendo esse jogo com linguagem de programação e bibliotecas atuais, oportunamente escreverei sobre. Por enquanto, você pode acompanhar o andamento do projeto pelo GitHub.
O script gerado
Como prometido, aqui está o script que eu gerei com o Claude Code, que pode ser útil para mais alguém.
Atualização (27/07/2026): pedi para o Claude Code modificar o script de modo a considerar apenas os arquivos na própria pasta, sem percorrer as subpastas. A versão a seguir já contém essa modificação.
#!/usr/bin/env bash
#
# Uso: ./dedupe.sh <pastaA> <pastaB>
#
# Compara arquivos de mesmo nome entre A e B (por soma de verificacao) e os
# organiza em subpastas "duplicados" e "unicos" dentro de cada uma.
set -euo pipefail
if [ $# -ne 2 ]; then
echo "Uso: $0 <pastaA> <pastaB>" >&2
exit 1
fi
A="$1"
B="$2"
if [ ! -d "$A" ] || [ ! -d "$B" ]; then
echo "Erro: ambos os argumentos devem ser pastas existentes." >&2
exit 1
fi
A="$(realpath "$A")"
B="$(realpath "$B")"
mkdir -p "$A/duplicados" "$A/unicos" "$B/duplicados" "$B/unicos"
checksum() {
sha256sum "$1" | awk '{print $1}'
}
# Percorre apenas os arquivos diretamente dentro de A (sem descer em
# subpastas, o que ja exclui duplicados/unicos e permite reexecucao segura).
find "$A" -maxdepth 1 -type f -print0 |
while IFS= read -r -d '' fileA; do
X="${fileA#"$A"/}"
fileB="$B/$X"
if [ -f "$fileB" ]; then
if [ "$(checksum "$fileA")" = "$(checksum "$fileB")" ]; then
mv "$fileA" "$A/duplicados/$X"
mv "$fileB" "$B/duplicados/$X"
echo "Duplicado: $X"
else
mv "$fileA" "$A/unicos/$X"
mv "$fileB" "$B/unicos/$X"
echo "Diferente: $X"
fi
else
mv "$fileA" "$A/unicos/$X"
echo "So em A: $X"
fi
done
# Move para B/unicos qualquer arquivo restante diretamente em B (arquivos
# que so existiam em B, ja que os demais foram tratados no loop acima).
find "$B" -maxdepth 1 -type f -print0 |
while IFS= read -r -d '' fileB; do
X="${fileB#"$B"/}"
mv "$fileB" "$B/unicos/$X"
echo "So em B: $X"
done
echo "Concluido."









