У меня есть папка с таким количеством файлов, в имени которых есть несколько двоеточий. Например: 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.
Я рекомендую:
- Загрузка Windows
- Выполнение полной проверки файловой системы (инструменты Linux пока не вполне подходят для этой задачи)
- Снова загружаемся в Linux и пробуем снова.