Eu usei um CD de inicialização ao vivo do Linux algumas semanas atrás e redirecionei as capturas de tela para minha unidade NTFS.
Os nomes de arquivo contêm um símbolo de dois-pontos :
que é um dos caracteres não suportados para um nome de arquivo no sistema de arquivos NTFS.
Os caracteres não suportados são:\ / : * ? " < > |
Tentei resolver isso usando o prompt de comando normal, PowerShell, algumas linguagens de script e até mesmo o Bash no Windows, mas nenhum funcionou.
Eu até tentei o \\?\
truque do caminho, mas também não funcionou.
A limitação está obviamente ligada ao sistema de arquivos NTFS, então qual é o caminho para continuar a partir daqui?
Inicialize de volta no seu CD ao vivo do Linux e corrija-o a partir daí.
O Windows simplesmente não consegue lidar com isso. Isso precisa ser feito a partir do linux.
A resposta do @LPChip é a resposta que resolve o seu problema, mas tenho mais detalhes que acho que justificam outra resposta aqui.
Os sistemas de arquivos são estruturas de dados que gerenciam seus arquivos em um disco, portanto, normalmente os próprios FS têm restrições mínimas nos nomes dos arquivos - o FS mais moderno (NTFS incluído) pode até mesmo conter bytes nulos tecnicamente, assim como o Python mantém strings (comprimento + matriz de bytes).
O fato de o FS oferecer suporte a strings arbitrárias não significa que você deva. Os sistemas operacionais práticos impõem restrições aos nomes dos arquivos para que possam apresentar uma interface de "caminho" sensata para o nível superior, onde os aplicativos podem acessar os arquivos.
Esta é a razão pela qual todo sistema operacional tem algumas limitações nos nomes dos arquivos. Notavelmente, o Linux e outros sistemas Unix permitem todos os caracteres, exceto o byte nulo e o separador de caminho (barra) em nomes de arquivo, excluindo dois nomes reservados
.
e..
(diretório atual e diretório pai). O Windows, por razões históricas, reserva mais caracteres e mais nomes especiais (por exemploCON
,LPT
, ,COM1
toCOM9
etc.) por meio da API normal do Windows, mas ainda permite esses nomes por meio de uma API de baixo nível, conforme usado pelo WSL1. Por exemplo, você pode criar algo como/mnt/c/CON
no WSL1 e usá-lo normalmente, mas não pode fazer nada fora do ambiente WSL.No Linux,
fsck
os programas podem reescrever nomes de arquivos inválidos se, de alguma forma, acabarem no sistema de arquivos. Suponho quechkdsk.exe
possa fazer algo semelhante, mas não verifiquei isso.A afirmação da barra lateral da Wikipedia sobre os caracteres não permitidos cita um documento (não oficial, ao que parece). Há uma versão de página da web aqui.
Investigando, vemos na seção 13, "Conceito - Namespace de nome de arquivo", que existem vários conjuntos de caracteres permitidos. O Windows não funciona bem com o POSIX, ao que parece.
No entanto, a menção do tipo DOS (o antigo estilo "8.3") traz à mente a capacidade do Windows de lidar com os chamados "nomes curtos" se tudo mais falhar. Você deve ser capaz de usar um
cmd
prompt paradir /x
ver o nome curto correspondente ao "nome longo" proibido do arquivo. Pode ser possível usar esse "nome curto" para renomear o arquivo para algo com menos problemas.Por favor, deixe-nos saber como foi!