Как удалить файл с несколькими знаками двоеточия в его имени?

У меня есть папка с таким количеством файлов, имя которой имеет несколько знаков двоеточия. Например: Mail::Message::Field::Full.3pm.gz

Интересно, как их удалить.

я пытался

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

Все с тем же результатом: rm: cannot remove 'Mail::Message::Field::Full.3pm.gz': Input/output error .

Кроме того, я попытался с обычной учетной записью пользователя и с пользователем root. В обоих случаях с тем же результатом, что и выше.

rm с параметром -f имеет тот же результат.

Эта же проблема возникает при переименовании файлов.

И, конечно, у меня есть права на запись в эту папку.

Выход ls -l равен

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

Я не знаю, находится ли этот вопрос, но файлы находятся в разделе NTFS.


Обновить

Я не думаю, что это проблема с оборудованием. Я могу получить доступ (писать, удалять, создавать, распаковывать и т. Д.) Все остальные файлы. Хотя я не могу получить доступ к проблемным файлам.

Очень важно, что файл находится в разделе NTFS.

Знак : не является особым символом для большинства систем unix, и, в частности, не для Linux (только / является специальным). Это не имеет никакого значения для ядра (некоторые приложения действительно придают ему особое значение, поэтому лучше не использовать его). В большинстве файловых систем unix, включая обычный ext2 / ext3 / ext4 Linux, вы можете использовать : в имени файла, как и любой другой символ.

NTFS имеет более строгие (но необязательные) правила, потому что это происходит из мира Windows. В Windows : в именах файлов не разрешено (вернее, разрешено на уровне ядра, но не поддерживается большинством приложений, включая оболочки по умолчанию ). Драйвер NTFS-3G с открытым исходным кодом NTFS-3G пытается помешать вам создавать имена файлов с помощью : в нем и может быть запутан, если он обнаружит существующее недопустимое имя файла.

В руководстве NTFS-3g указано, что

он всегда создает новые файлы в пространстве имен POSIX для обеспечения максимальной мобильности и возможностей взаимодействия. Это означает, что имена файлов чувствительны к регистру, и допускаются все символы, кроме '/' и '\0' . Это совершенно легально для Windows, хотя некоторые приложения могут запутаться.

Убедитесь, что вы используете последнюю версию драйвера ntfs-3g и что файловая система не установлена ​​с опцией windows_names .

Когда вы говорите то же самое при переименовании, вы имеете в виду, что вы не можете переименовать их, или вам удастся переименовать их, но тогда у вас такая же проблема при удалении (возможно, я не догадываюсь).

Просто проверяя, пытались ли вы использовать подстановочные знаки, если у вас слишком много файлов, вы можете попробовать что-то вроде

  rm -i Mail*essag**.gz 

-i приведет к появлению запроса перед удалением, поэтому вы можете проверить, чтобы убедиться, что вы удаляете только нужные файлы.

Хотя я подозреваю, что это проблема с разрешениями или файловой системой, а не с характеристиками имени файла. Или, возможно, указание на некоторые аппаратные сбои.

Прочитав все это, я подозреваю, что файловая система NTFS повреждена.

Я рекомендую:

  1. Загрузка в Windows
  2. Выполнение полной проверки файловой системы (инструменты Linux еще не достаточно для этой задачи)
  3. Вернемся к Linux и повторю попытку.