LINUX.ORG.RU

как переименовать файл с именем в неизвестной кодировке?


0

1

федора 14

сделал скриншот из clip2net и сохранил с кириллическим именем.
В баше имею такое: http://clip2net.com/clip/m68436/1326565257-clipn26805-11kb.png

Делал:
export LANG=ru_RU.koi8r
export LANG=ru_RU.CP1251

при обоих, как и при utf-8 имя файла - ????.png

Вот просто стало интересно, как средствами терминала его хотя бы переименовать? К нему ведь нельзя обратиться - ни скопировать, ни удалить - т.к нельзя набрать имя.

т.к нельзя набрать имя.

С чего бы это? $'...' никто не отменял (что внутри, можно выцепить из вывода, скажем, hexdump, только по умолчанию выводит word, нужно менять порядок в паре)

n01r ★★
()
Ответ на: комментарий от n01r

только по умолчанию выводит word, нужно менять порядок в паре)

можно вот это пояснить?

получил я

[user@localhost img]$ hexdump dust.png | head
0000000 5089 474e 0a0d 0a1a 0000 0d00 4849 5244
0000010 0000 e301 0000 5b01 0208 0000 6900 718c
0000020 0077 0000 7009 5948 0073 0e00 00c4 0e00
0000030 01c4 2b95 1b0e 0000 0020 4449 5441 9c78
0000040 bda4 af57 492d 2676 adf6 1115 b669 c7df
0000050 739f 5d7d 5d57 eeec 6d72 7438 914d 024d
0000060 4333 4342 8482 0e04 4040 0624 bd03 1048

и что с этим делать?

sergey-novikov ★★★
() автор топика
Ответ на: комментарий от uzbl

спасибо

000000a0 65 6c 0a 2e 2f e3 e0 e2 ed ee 2e 70 6e 67 0a 2e |el../......png..|

получаю «e3 e0 e2 ed ee 2e 70 6e 67»
это вроде как имя файла в 16-ричной системе

echo $'e3 e0 e2 ed ee 2e 70 6e 67' - непонятно что

подскажите, что дальше?

sergey-novikov ★★★
() автор топика
Ответ на: комментарий от gman

Это в IBM866, а в cp1251 - гавно.png, извиняюсь за откровения.

gman
()
Ответ на: комментарий от sergey-novikov
$ echo 65 6c 0a 2e 2f e3 e0 e2 ed ee 2e 70 6e 67 |sed -r 's/^| /\\x/g'
\x65\x6c\x0a\x2e\x2f\xe3\xe0\xe2\xed\xee\x2e\x70\x6e\x67
$ echo -e '\x65\x6c\x0a\x2e\x2f\xe3\xe0\xe2\xed\xee\x2e\x70\x6e\x67'
el
./�����.png
$ echo -e '\x65\x6c\x0a\x2e\x2f\xe3\xe0\xe2\xed\xee\x2e\x70\x6e\x67' |iconv -f cp1251
el
./гавно.png

Имя файла намекает, я правдо н понял на что ;)

uzbl
()

Самый лобовой способ - оставить его единственным файлом в папке и тогда по табу он сам в консоль и впечатается

aleks13
()
Ответ на: комментарий от uzbl

ЫЫЫ

ls | iconv -f cp1251

правда чтобы с ним что-то сделать - надо использовать inode, о чем было в самом начале. Но для восстановления имени достаточно сделать правильный ls

остается вопрос, почему не помогает «export LANG=ru_RU.cp1251» ?

sergey-novikov ★★★
() автор топика
Ответ на: комментарий от sergey-novikov

потому что правильные шрифты терминала надо установить, вроде.

unanimous ★★★★★
()
Ответ на: комментарий от sergey-novikov

остается вопрос, почему не помогает «export LANG=ru_RU.cp1251» ?

Недостаточно, можно, например, так: LC_CTYPE=ru_RU.CP1251 luit ls (bash, whatever).

anonymous
()
Ответ на: комментарий от sergey-novikov

правда чтобы с ним _что-то_ сделать - надо использовать inode, о чем было в самом начале

Там же уже предложили: rm $'\xe3\xe0\xe2\xed\xee\x2e\x70\x6e\x67' (сработает в баше / zsh).

anonymous
()
Ответ на: комментарий от anonymous

ну да
а перед этим нужно узнать это \xe3\xe0\xe2\xed\xee\x2e\x70\x6e\x67

уже ж предложили нормальный вариант с find
чтож вы костыли то лепите

anonymous
()
Ответ на: комментарий от anonymous

чтож вы костыли то лепите

Читаем внимательно, вникаем, потом комментируем... Это лишь к тому, что «не только через inode» тчк

anonymous
()
Ответ на: комментарий от anonymous

ещё можно через жёппу

Еще раз, просто плюс в сторону баша (i.e. и его возможностей хватит). А то, что вы маком решили хвастануть, меня мало волнует.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.