Também disponível em: English · Español · Français · العربية
Caracteres não permitidos em nomes de arquivo
Cole um nome, escolha o sistema que interessa e receba um que realmente salva, com cada mudança explicada em vez de aplicada em silêncio.
O que torna um nome de arquivo ilegal?
Menos do que você imagina em alguns sistemas e muito mais do que imagina em outros — e é aí que está o problema. O Linux proíbe exatamente duas coisas dentro de um nome: o byte nulo e a barra. Todo o resto vale: dois-pontos, interrogações, pontos finais, um arquivo chamado NUL. O macOS acrescenta mais um, os dois-pontos, herdados do HFS, onde esse caractere era o separador de caminhos; é por isso que o Finder troca dois-pontos e barra ao lhe mostrar um nome.
O Windows é o rigoroso. Proíbe nove caracteres imprimíveis — menor que, maior que, dois-pontos, aspas duplas, barra, barra invertida, barra vertical, interrogação e asterisco —, além do byte nulo e de todos os caracteres de controle de 1 a 31. Recusa nomes terminados em ponto ou em espaço. E reserva um conjunto de nomes de dispositivo que não podem ser usados como nome de arquivo em diretório nenhum.
Então um nome que funciona na sua máquina pode falhar na de um colega, ou dentro de um zip que ele abra no Windows. Este sanitizador aplica as regras que você pedir e, por padrão, aplica todas de uma vez.
Como usar
- Digite ou cole o nome. Só o nome, não o caminho inteiro: as regras que importam aqui valem para um componente de cada vez.
- Escolha quais regras aplicar. “Seguro em todo lugar” é o padrão e é estritamente a opção mais agressiva; os sistemas isolados estão ali para quando você sabe exatamente onde o arquivo vai parar.
- Leia o que mudou, não só o resultado. Cada mudança aparece com o motivo, e um painel diz qual dos três sistemas teria recusado o nome que você digitou.
São 28 nomes reservados, não 22
Quase toda lista de nomes reservados do Windows traz os mesmos 22: CON, PRN, AUX, NUL, de COM1 a COM9 e de LPT1 a LPT9. A documentação da Microsoft inclui mais seis, e são justamente os que vale conhecer, porque não há como adivinhá-los.
Esses seis são COM e LPT escritos com algarismos sobrescritos, os caracteres ¹, ² e ³ do ISO/IEC 8859-1. A Microsoft explica o motivo numa nota da mesma página: o Windows reconhece esses caracteres como algarismos e os trata como parte válida de um nome de dispositivo COM ou LPT, de modo que ficam reservados em todos os diretórios. A documentação até dá o teste, observando que escrever em COM com um um sobrescrito não chega a criar arquivo.
A reserva também sobrevive à extensão, e isso pega mais gente. NUL.txt e NUL.tar.gz equivalem ambos a NUL, porque a regra vale para tudo que vem antes do primeiro ponto, não para o trecho anterior ao último. Uma ferramenta que corte pelo último ponto perde o segundo caso; esta corta pelo primeiro.
O que esta ferramenta não faz
Ela sanitiza um nome, não um caminho. O limite de 260 caracteres do Windows vale para o caminho inteiro, e nenhuma ferramenta que olhe um único nome sabe em que profundidade ele vai acabar; os 255 caracteres que esta página impõe são o limite por nome que a maioria dos sistemas de arquivos aplica à parte. Esses dois números são confundidos o tempo todo e não medem a mesma coisa.
Ela também não sabe dizer o que o seu sistema de arquivos específico vai aceitar. As regras aqui são as documentadas para Windows, POSIX e macOS, mas um compartilhamento de rede, um pendrive em FAT ou um cliente de sincronização na nuvem podem ser mais rigorosos, às vezes de formas não documentadas. Um nome que esta página chame de seguro em todo lugar é seguro diante das regras publicadas, que é tudo o que uma ferramenta estática pode prometer.
E ela preserva de propósito o ponto inicial. A documentação da Microsoft diz com todas as letras que um ponto é aceitável como primeiro caractere de um nome, então .gitignore e .env são legais no Windows; o problema é só o ponto final. Removê-lo, como fazem alguns sanitizadores, quebraria os dotfiles sem motivo.
Por que é grátis?
As regras são algumas centenas de bytes de tabelas e a renomeação acontece no seu próprio navegador. Nada do que você digita é enviado, nada é registrado e não há conta a criar.
Sem cadastro, sem limites e sem marca d'água em nada que você copiar.