Не могу удалить файл с иностранными буквами


3

У меня есть файл:

På hjul.mkv

При попытке переместить или удалить файл я получаю

rm: can't remove 'På Hjul.mkv': No such file or directory

То же самое происходит при попытке выдать $ rm *P*или тому подобное:

wobba:/media/disk/ # rm P*
rm: can't remove 'På Hjul.mkv': No such file or directory

Что я могу сделать, чтобы удалить его или переименовать?

РЕДАКТИРОВАТЬ: Операционная система, которую я использую, является Openelec Media Center на основе Debian . Жесткий диск отформатирован с NTFS, и перезагрузка системы не помогает.

ls -l P*действует так же, как rm P*когда дело доходит до имени:

wobba:/media/disk/ # ls -l P*
-rw-------    1 root     root     1395882911 Apr 25 11:17 På Hjul.mkv

EDIT2: Openelec использует BusyBox, который не включает -inumпоиск inode numberв своей findкоманде.


Это выглядит странно. Есть еще информация? Какая ОС, какая файловая система, какой набор символов (iso8859-1, utf-8) вы используете? Какой вывод у "ls -l * P *"?
Уве

Звучит как поврежденный файл, помогает ли перезагрузка системы?

Это файловая система Windows (диск), смонтированная в системе * nix (или наоборот)? Посмотрите, можете ли вы получить к нему доступ с помощью ОС, которая его создала.
Скотт

У меня есть вопрос. @ Uwe Как мне узнать, какую кодировку я использую? Я думаю, что я использую UTF-8, хотя
chwi

Что выводит "echo $ LC_CTYPE"? Содержит ли он ".UTF-8"?
Уве,

Ответы:


1

Попробуйте удалить его по идентификатору файла, который обычно является номером inode в файловых системах на основе ext, но я надеюсь, что для NTFS он предоставит эквивалент идентификатора файла NFTS, который вы можете использовать для его удаления.

Нет никаких гарантий, что это сработает, но стоит попробовать. Что-то вроде:

matt@mattdev::/tmp/ls -il
total 0   
20090 -rw------- 1 matt matt  0 Apr 26 18:27 tmpQJyK5Q
16284 -rw-rw-r-- 1 matt matt  0 Apr 26 18:26 unity_support_test.0

с последующим:

find . -inum 20090 -exec rm -i {} \;

Конечно, выше не используется NTFS, но ext4. Мне любопытно узнать, работает ли это или нет.


Черт, Openelec использует BusyBox v1.21.0, и у него нет -inumпараметра в find: \ В противном случае, хорошая идея!
chwi

1

Кстати, у меня только что была эта проблема на BusyBox, и это решило ее для меня:

$ rm -i *   # CAUTION Be **SURE** you include the '-i' on this command! CAUTION

Затем я просто отвечал «нет» всем файлам в этом каталоге, пока не попал в проблемный (в моем случае непечатный символ, отображаемый в виде знака вопроса, например:? Имя файла, а затем я ответил «да»). Пуф. Вы можете ctrl-c интерактивный rm, как только вы достигли проблемного файла.


1
Я разместил это в списке рассылки BusyBox, так как обе проблемы в этой теме были пользователями, использующими BusyBox; просто чтобы они знали об этом. Я случайно начал довольно долгое (и продолжающееся) обсуждение, если кому-то интересно: lists.busybox.net/pipermail/busybox/2014-May/thread.html#80958
Джейсон C,

0

Чтобы сделать это на самом деле, мне пришлось использовать общий ресурс Samba и удалить файл с компьютера Windows в той же сети. Несмотря на это, переименование или перемещение не работали над Samba, только удаление.

Спасибо Скотт.


Другими словами, вы использовали мое предложение.
Скотт

«Посмотрите, можете ли вы получить к нему доступ с помощью ОС, которая его создала», Windows не создала ее, но да, это довольно близко к тому, что вы упомянули.
Чуи

Я присоединяюсь к другим, которые считают, что это странная проблема. Вы изначально создали På hjul.mkvфайл в вашей системе OpenELEC (Linux)? Вы можете сделать это снова? Если да, у вас снова возникает та же проблема, что вы можете lsфайл, но не rmон? Потому что было бы странно, если бы система могла создать файл, который она не может удалить.
Скотт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.