Como renomear recursivamente arquivos / pastas para tornar seus nomes compatíveis com o Windows?


11

Eu tenho vários arquivos em uma caixa do Ubuntu, que têm vários caracteres nos nomes de arquivos que o Windows não aceita (principalmente ":" e "*", mas possivelmente outros).

Qual é a maneira mais simples de renomear tudo e mudar para uma máquina Windows? Não há problema em substituir esses caracteres por algo como "[dois-pontos]" e "[asterisco]".


1
Você deve evitar esses nomes mesmo no Linux (especialmente *).
Cyrus

4
@cYrus Depende de como você lida com arquivos. Eu imagino que seja apenas um problema com scripts e conchas. Estou no OS X e o único personagem proibido é :, o que é ruim o suficiente. Nomear documentos após o conteúdo é útil e, se o nome de um artigo terminar com uma pergunta, o nome do arquivo também deve ser.
Daniel Beck

O @cYrus e eu fazemos, no meu software, mas alguns foram escritos por pessoas que não o fazem. Por exemplo, o qmail usa: em quase todos os nomes de arquivos criados.
RomanSt

@ Daniel Beck: Claro, mas, infelizmente, ter um sistema de arquivos que suporte esses nomes não é suficiente, pois você pode usar programas que mexem com tudo. Eu nem uso espaços.
Cyrus

2
@Steven boa pergunta! Eu acho que o Windows seria um pouco mais útil, pois pode acontecer que alguém receba os arquivos no Windows e precise corrigi-los nessa plataforma.
Peltier

Respostas:


4

Dê uma olhada no Glindra renomear e desintoxicação .

Os utilitários de arquivo Glindra podem ser instalados no Windows ou Linux. Exemplos de limpeza de nomes de arquivos no Windows:

rena *.* -portable

rena *.* -safe
  • -safe
    Mapeia traços (hífens) para sublinhados.
    Recolhe espaços.
    Mapeia caracteres problemáticos como * ?: [] "<> | () {} para sublinhar.
  • -portable
    Executa as mesmas operações de limpeza que -safe e, além disso:
    mapeia todos os caracteres de 8 bits da metade superior do alfabeto latino 1 para caracteres razoáveis ​​de fallback de 7 bits.
    Mapeia os caracteres de aspas simples '' to para sublinhar.

Fonte: Corrigindo nomes de arquivos Unix / Linux / POSIX: caracteres de controle (como nova linha), traços iniciais e outros problemas


Essa página mostra uma 404. Cópia em cache do Google .
Daniel Beck

Esse é um discurso incrível de David Wheeler! Especialmente depois que eu tinha batido meu teclado depois de tentar cd em um diretório que o JungleDisk chamou "~ \ irina". Quer adivinhar se a conclusão de tabulação trabalhou com ele ...?
RomanSt

1
Desintoxicação é para tornar os arquivos do Windows compatíveis com Unix, e não o contrário.
endolith 20/02

3
@DennisWilliamson - Parece que o glindra (para Windows) não pode renomear caracteres com nomes de arquivos inválidos. G:\spc>rena.exe -safe -portable *.txtsaídas[FATAL-ERROR] Filename syntax error: aa:a.txt
Steven

1
Observe a mudança na sintaxe ao acessar o Linux, ou seja rena '*.*' -portable, e se você quiser recursiva, use algo como rena '***/*.*' -portableno Linux. E eu acredito que a renomeação deve ser feita no Linux, não no Windows.
19415 holroy

4

Tente Recuva .

É o único utilitário do Windows que encontrei que lida com nomes de arquivos não compatíveis com o Windows.

Habilite a verificação de arquivos não excluídos (para recuperação de discos danificados ou reformatados) e verifique sua pasta. Na restauração, ative Restaurar estrutura da pasta . O Recuva efetivamente "copia" o diretório inteiro para outro local enquanto "santifica" os nomes de arquivos hostis.


1

Sem estar no Linux e sem testar nada, acredito que se poderia usar one-liners como os abaixo.

Para alterar um caractere:

find . -type f -exec rename 's/:/\[colon\]/g' {} +
find . -type f -exec rename 's/\*/\[asterisk\]/g' {} +

E, finalmente, para remover todos os caracteres não alfanuméricos:

find . -type f -exec rename 's/[^A-Za-z0-9._]//g' {} +

Note que isso precisa ser ampliada com todos os outros personagens ilegais de janelas, ie<>:"/\|?*
holroy

0

Se seus arquivos já estiverem em um volume NTFS, parece que a execução do chkdisk no Windows "resolve" o problema. Infelizmente, parece que o faz excluindo os arquivos incorretos.


0

Eu consegui com uma combinação das duas primeiras respostas, além de pyRenamer (GUI). No Linux, usei o pyRenamer para recolher espaços nos nomes de pastas (diretórios) - substituindo espaço por nada - para que os outros programas (renomeação Glindra) funcionem recursivamente (pode-se colocar sublinhados). Nos arquivos, também peguei alguns caracteres ou palavras aceitáveis ​​pelo Windows para economizar espaço e, da mesma forma, reduzi os espaços nos nomes de arquivos. Em seguida, executei o rena para remover caracteres que não são do Windows, salvos em uma unidade flash e usei o Recuva para 'restaurar' uma pasta no Windows. Recuva indica se um caminho de arquivo é muito longo (e também remove caracteres que não são do Windows). Ainda não encontrei uma ferramenta que verifique o caminho dos nomes de arquivos para ver se eles estão abaixo do limite máximo de 255 do Windows (ou diga 240 para permitir uma margem de manobra).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.