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


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.