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

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

У меня есть папка с таким количеством файлов, в имени которых есть несколько двоеточий. Например: 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.


Обновлять

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

решение1

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

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

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

TheРуководство пользователя NTFS-3gговорится, что

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

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

решение2

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

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

 rm -i Mail*essag**.gz

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

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

решение3

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

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

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

Связанный контент