Como apagar um arquivo com vários sinais de cólon em seu nome?

3

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

Gostaria de saber 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, eu tentei com minha conta de usuário normal e com usuário root. Em ambos os casos, com o mesmo resultado acima.

A opção

rm with -f 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

Eu 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. Eu sou capaz de acessar (gravar, excluir, criar, descompactar, etc) todos os outros arquivos. Embora não consiga acessar os arquivos problemáticos.

    
por ceochronos 08.07.2012 / 00:41

3 respostas

5

Importa muito 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 (somente / é especial). Ele não tem nenhum significado para o kernel (alguns aplicativos dão um significado especial, por isso é melhor não usá-lo). Na maioria dos sistemas de arquivos unix, incluindo o habitual ext2 / ext3 / ext4 do Linux, você pode usar : em um nome de arquivo como qualquer outro caractere.

O NTFS tem regras mais rigorosas (mas opcionais), porque vem do mundo do 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 o cascas padrão ). O driver NTFS de código aberto NTFS-3G tenta impedir que você crie nomes de arquivos com : , e pode ficar confuso se encontrar um nome de arquivo inválido existente.

O manual do NTFS-3g afirma que

it always creates new files in the POSIX namespace for maximum portability and interoperability reasons. This means that filenames are case sensitive and all characters are allowed except '/' and '%bl0ck_qu0te%'. This is perfectly legal on Windows, though some application may get confused.

Verifique se você está usando a versão mais recente do driver ntfs-3g e se o sistema de arquivos não está montado com a opção windows_names .

    
por 08.07.2012 / 01:21
1

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

Basta verificar, você tentou usar curingas, se não tiver muitos arquivos, tente algo como

 rm -i Mail*essag**.gz

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

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

    
por 08.07.2012 / 00:46
0

Depois de ler todas as idas e vindas sobre isso, eu suspeito que o sistema de arquivos NTFS foi 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 essa tarefa)
  3. Inicializando no Linux e tentando novamente.
por 08.07.2012 / 18:07