CLI em Go para organizar automaticamente arquivos e pastas de uma pasta de downloads por categoria.
O projeto varre o diretório informado, identifica o tipo dos arquivos por extensão, MIME type e heurísticas simples de nome, e move cada item para uma pasta de categoria correspondente.
- Organiza arquivos e diretórios a partir de um diretório de origem.
- Classifica por extensões simples e multi-extensões, como
.tar.gz. - Usa detecção por MIME type como fallback.
- Aplica heurísticas por nome para casos comuns.
- Ignora diretórios já organizados.
- Suporta modo
dry-runpara simular a execução sem mover arquivos. - Exibe progresso inline em uma única linha no terminal.
O organizador atualmente distribui itens nas seguintes categorias:
imagesvideosaudiodocumentsarchivespackagescodeconfigscriptsdevopsblockchaindatadesignothers
- Lê todos os itens do diretório de origem.
- Ignora pastas que já tenham nome de categoria conhecida.
- Para arquivos, determina a categoria com esta prioridade:
- multi-extensão;
- extensão simples;
- MIME type;
- heurística por nome.
- Para diretórios, percorre os arquivos internos e escolhe a categoria dominante.
- Move o item para a pasta final correspondente dentro do diretório de origem.
- Go
1.26.0
Clone o repositório e baixe as dependências:
go mod downloadPara gerar o binário:
go build -o dl-organizer .Executando com o binário:
./dl-organizer organize --source ./DownloadsExecutando diretamente com Go:
go run . organize --source ./DownloadsSimulação sem mover arquivos:
go run . organize --source ./Downloads --dry-run--source,-s: diretório que será organizado. Padrão:./Downloads--dry-run: mostra o que seria feito sem mover os arquivos
[==========>.......] 62% (8/13) 📄 contrato.pdf 📚 -> documents
.
├── main.go
├── cmd/
│ ├── root.go
│ └── organize.go
└── internal/
└── organizer/
├── organizer.go
└── classifier.go
main.go: ponto de entrada da aplicação.cmd/root.go: comando raiz da CLI.cmd/organize.go: comandoorganizee definição das flags.internal/organizer/organizer.go: execução da varredura, movimentação e progresso no terminal.internal/organizer/classifier.go: regras de classificação por extensão, MIME e heurística.
Para validar o projeto:
go test ./...Formatando o código:
gofmt -w .Este projeto é distribuido sobre a licença MIT. Veja o arquivo LICENSE para mais detalhes.
2026, Thiago Zilli Sarmento ❤️