Como deletar um arquivo com vários sinais de dois pontos em seu nome?

Como deletar um arquivo com vários sinais de dois pontos em seu nome?

Eu tenho uma pasta com tantos arquivos cujo nome tem vários sinais de dois pontos. Por exemplo: Mail::Message::Field::Full.3pm.gz.

Eu me pergunto como excluí-los.

eu tentei

rm Mail::Message::Field::Full.3pm.gz
rm Mail\:\:Message\:\:Field\:\:Full.3pm.gz
rm "Mail::Message::Field::Full.3pm.gz"

Tudo com o mesmo resultado: rm: cannot remove 'Mail::Message::Field::Full.3pm.gz': Input/output error.

Além disso, tentei com minha conta de usuário normal e com usuário root. Em ambos os casos com o mesmo resultado acima.

rmcom -fopção tem o mesmo resultado.

O mesmo problema se aplica ao renomear os arquivos.

E, claro, tenho permissões de escrita nessa pasta.

A saída de ls -lé

ls: cannot access Mail::Message::Field::Full.3pm.gz: Input/output error
-????????? ? ? ? ?            ? Mail::Message::Field::Full.3pm.gz

Não sei se isso importa, mas os arquivos estão em uma partição NTFS.


Atualizar

Eu não acho que seja um problema de hardware. Consigo acessar (escrever, excluir, criar, descompactar, etc.) todos os outros arquivos. Embora não consiga acessar os arquivos problemáticos.

Responder1

É muito importante que o arquivo esteja em uma partição NTFS.

O :sinal não é um caractere especial na maioria dos sistemas Unix e, em particular, não no Linux (apenas /é especial). Ele não tem nenhum significado para o kernel (algumas aplicações lhe dão um significado especial, então é melhor não usá-lo). Na maioria dos sistemas de arquivos unix, incluindo o habitual ext2/ext3/ext4 do Linux, você pode usar :um nome de arquivo como qualquer outro caractere.

O NTFS tem regras mais rigorosas (mas opcionais), porque vem do mundo Windows. No Windows, :não é permitido em nomes de arquivos (ou melhor, é permitido no nível do kernel, mas não é suportado pela maioria dos aplicativos,incluindo os shells padrão). Odriver NTFS de código aberto NTFS-3Gtenta impedir que você crie nomes de arquivos :nele e pode ficar confuso se encontrar um nome de arquivo inválido existente.

OManual NTFS-3gafirma que

ele sempre cria novos arquivos no namespace POSIX para máxima portabilidade e interoperabilidade. Isso significa que os nomes de arquivos diferenciam maiúsculas de minúsculas e todos os caracteres são permitidos, exceto '/'e '\0'. Isso é perfeitamente legal no Windows, embora alguns aplicativos possam ficar confusos.

Certifique-se de estar usando a versão mais recente do driver ntfs-3g e de que o sistema de arquivos não esteja montado com a windows_namesopção.

Responder2

Quando você diz que o mesmo se aplica ao renomear, você quer dizer que não pode renomeá-los ou que consegue renomeá-los, mas então você tem o mesmo problema ao excluir (provavelmente não, estou supondo).

Apenas verificando, você tentou usar curingas? Se não tiver muitos arquivos, você pode tentar algo como

 rm -i Mail*essag**.gz

Isso -ifará com que você seja avisado antes da exclusão, para que você possa verificar se está excluindo apenas os arquivos desejados.

Embora eu suspeite que isso seja um problema com permissões ou sistema de arquivos, e não com as características do nome do arquivo. Ou possivelmente uma indicação de alguma falha de hardware.

Responder3

Depois de ler tudo isso, suspeito que o sistema de arquivos NTFS tenha sido danificado.

Eu recomendo:

  1. Inicializando no Windows
  2. Executando uma verificação completa do sistema de arquivos (as ferramentas do Linux ainda não são suficientes para esta tarefa)
  3. Inicializando novamente no Linux e tentando novamente.

informação relacionada