Sanitizador de Nomes de Arquivo

Cole uma lista de nomes de arquivos e receba uma versão limpa que sobreviverá a qualquer sistema operacional, qualquer arquivo ZIP, qualquer caminho de CDN. O sanitizador converte letras acentuadas em ASCII puro, remove caracteres que quebram no Windows (\ / : * ? " < > |), remove caracteres de controle, colapsa espaços em branco e substitui sequências proibidas pela sua escolha (padrão: hífen). Útil antes de fazer upload em massa para S3, enviar um arquivo ZIP de material didático ou corrigir uma importação de fotos de um antigo NAS.

Como sanitizar nomes de arquivos

  1. 1

    Cole os nomes dos arquivos

    Um por linha, com ou sem extensões. As extensões são preservadas como estão.

  2. 2

    Escolha a substituição

    Escolha o caractere usado para substituir sequências inseguras. Hífen (`-`) é o padrão mais seguro; sublinhado (`_`) é a escolha retrô.

  3. 3

    Execute o sanitizador

    Cada nome é cortado, convertido em ASCII, despojado de caracteres proibidos e com espaços colapsados. Se nada restar, ele vira `file`.

  4. 4

    Revise antes de renomear

    A saída lista apenas os nomes limpos, então revise-a para verificar colisões (duas entradas se tornando a mesma saída) antes de renomear no local.

O que é inseguro e por quê

Diferentes sistemas de arquivos e ferramentas têm diferentes listas negras. A interseção segura entre plataformas é mais restrita do que a maioria das pessoas percebe.

Caracteres e padrões que tornam nomes de arquivos inseguros

Item Por que é inseguro
\ / : * ? " < > | Proibido no Windows (NTFS, FAT).
Caracteres de controle ASCII 0x00-0x1F Ilegal na maioria dos sistemas de arquivos; quebra scripts de shell.
Espaços iniciais/finais Removidos silenciosamente pelo Windows; bugs invisíveis.
Pontos finais Removidos silenciosamente pelo Windows.
Nomes reservados CON, PRN, AUX, NUL, COM1..9, LPT1..9, todos bloqueados no Windows.
Marcas de combinação Unicode Fazem café parecer o mesmo que café, mas ser um nome de arquivo diferente em alguns sistemas.
Emojis e glifos pictográficos Sobrevivem em sistemas modernos, mas quebram pipelines CI mais antigos e caminhos de CDN.

Etapas de normalização aplicadas

  1. Conversão para ASCII. Letras acentuadas se tornam sua base simples: café vira cafe, naïve vira naive. Escritas sem equivalente ASCII (CJK, emoji) são removidas.
  2. Substituição de caracteres proibidos. \ / : * ? " < > | e caracteres de controle viram o seu caractere de substituição (padrão: hífen).
  3. Colapso de espaços em branco. Sequências de espaços e tabulações se tornam um único caractere de substituição.
  4. Corte das bordas. Pontos e caracteres de substituição no início e no fim são removidos; um resultado vazio vira file.
  5. Extensões preservadas. Pontos dentro do nome não são substituídos, então .pdf, .jpg, .tar.gz sobrevivem; apenas os pontos finais são removidos.

Dicas

  • Mantenha a extensão. Pontos dentro de um nome são preservados, então .pdf, .jpg e .tar.gz ficam como estão.
  • Verifique colisões. Résumé.pdf e Resume.pdf se tornam resume.pdf, porque os acentos são sempre convertidos. Revise a saída antes de renomear no local.
  • Caminhos da web. Para URLs, também codifique em porcentagem após sanitizar, ou melhor, mantenha o slug da URL como um subconjunto de [a-z0-9-] para que a codificação nunca seja necessária.

Perguntas frequentes

Para ativos da web e ZIPs entre plataformas, sim, evita bugs sutis quando um arquivo é enviado para um servidor Windows que não diferencia maiúsculas e minúsculas e vinculado a um CDN Linux que diferencia. O sanitizador nunca altera maiúsculas e minúsculas, então converta os nomes para minúsculas você mesmo se precisar. Para trabalho local, é uma questão de gosto.

Espaços são legais em todos os sistemas operacionais modernos, mas forçam a codificação de URL (%20), quebram muitos pipelines de shell e confundem ferramentas mais antigas. Substituí-los por um hífen elimina uma categoria inteira de bugs.

O sanitizador sempre gera ASCII puro. Letras acentuadas são convertidas (café vira cafe), o cirílico é transcrito para uma aproximação latina e caracteres sem equivalente ASCII (CJK, tailandês, emoji) são removidos. Se algum sistema de destino precisar dos nomes não latinos originais, guarde-os em um arquivo separado.

Não, a lista é sanitizada na memória durante a solicitação e não é armazenada ou registrada em nenhum log posteriormente.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas