ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] Переконвертация имён файлов на ext3
@ 2006-02-24 19:00 Alexandr A. Alexandrov
  2006-02-24 19:33 ` Denis Kirienko
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Alexandr A. Alexandrov @ 2006-02-24 19:00 UTC (permalink / raw)
  To: community

Доброго времени суток!

  Продолжаю возиться с Компактом 3 - и возник ещё такой вот интересный
вопрос   (в  принципе,  не  важно,  что  Компакт  -  это  для  любого
дистрибутива должно быть одинаково).

  На  один  из  его  дисков  скопировали  данные  из подмонтированного
винчестера  с  ext3,  на  котором  были,  в  том  числе,  и  файлы  из
samba-ресурса.  Они  хранились  на  диске в koi-8.

  Так вот - теперь диск унесли - и хотелось бы получить имена файлов в
нормальном виде. То, что выдаёт ls совершенно нормально перекодируется
в  любую  кодировку.  но  вот  что-то  я  пока  не придумаю изящного и
простого  способа перекодировать имена файлов. Ну то есть в скрипте же
не получается выполнить что-то типа "mv ????.doc файл.doc"...

  Как подобную вещь сделать?

-- 
С уважением,
 Александр                          mailto:aaa@inrecolan.com

Девиз дня: В мире есть 10 категорий людей: те, кто знает двоичное исчесление, и те, кто не знает.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Comm] Переконвертация имён файлов на ext3
  2006-02-24 19:00 [Comm] Переконвертация имён файлов на ext3 Alexandr A. Alexandrov
@ 2006-02-24 19:33 ` Denis Kirienko
  2006-02-24 19:40   ` Aleksey Fedoseev
  2006-02-24 19:35 ` Alexandr A. Alexandrov
  2006-02-26 12:32 ` ABATAPA
  2 siblings, 1 reply; 11+ messages in thread
From: Denis Kirienko @ 2006-02-24 19:33 UTC (permalink / raw)
  To: community

Alexandr A. Alexandrov пишет:

>   Продолжаю возиться с Компактом 3 - и возник ещё такой вот интересный
> вопрос   (в  принципе,  не  важно,  что  Компакт  -  это  для  любого
> дистрибутива должно быть одинаково).
> 
>   На  один  из  его  дисков  скопировали  данные  из подмонтированного
> винчестера  с  ext3,  на  котором  были,  в  том  числе,  и  файлы  из
> samba-ресурса.  Они  хранились  на  диске в koi-8.
> 
>   Так вот - теперь диск унесли - и хотелось бы получить имена файлов в
> нормальном виде. То, что выдаёт ls совершенно нормально перекодируется
> в  любую  кодировку.  но  вот  что-то  я  пока  не придумаю изящного и
> простого  способа перекодировать имена файлов. Ну то есть в скрипте же
> не получается выполнить что-то типа "mv ????.doc файл.doc"...
> 
>   Как подобную вещь сделать?

Что-то не очень понятно, что сделать нужно, но, по-видимому, что-то вроде

for f in * ; do mv $f `echo $f | iconv -f KOI-8 -t UTF-8` ; done

Это если нет пробелов в именах...

--
Денис



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Comm] Переконвертация имён файлов на ext3
  2006-02-24 19:00 [Comm] Переконвертация имён файлов на ext3 Alexandr A. Alexandrov
  2006-02-24 19:33 ` Denis Kirienko
@ 2006-02-24 19:35 ` Alexandr A. Alexandrov
  2006-02-25  9:45   ` Sergey Lizogub
  2006-02-26 12:32 ` ABATAPA
  2 siblings, 1 reply; 11+ messages in thread
From: Alexandr A. Alexandrov @ 2006-02-24 19:35 UTC (permalink / raw)
  To: community

Доброго времени суток!

  Спасибо, подсказали: есть такая вещь как convmv. Сейчас попробую.

Friday, February 24, 2006, 10:00:47 PM, вы писали:

AAA>   Продолжаю возиться с Компактом 3 - и возник ещё такой вот интересный
AAA> вопрос   (в  принципе,  не  важно,  что  Компакт  -  это  для  любого
AAA> дистрибутива должно быть одинаково).

AAA>   На  один  из  его  дисков  скопировали  данные  из подмонтированного
AAA> винчестера  с  ext3,  на  котором  были,  в  том  числе,  и файлы  из
AAA> samba-ресурса.  Они  хранились  на  диске в koi-8.

AAA>   Так вот - теперь диск унесли - и хотелось бы получить имена файлов в
AAA> нормальном виде. То, что выдаёт ls совершенно нормально перекодируется
AAA> в  любую  кодировку.  но  вот  что-то  я  пока  не придумаю изящного и
AAA> простого  способа перекодировать имена файлов. Ну то есть в скрипте же
AAA> не получается выполнить что-то типа "mv ????.doc файл.doc"...

AAA>   Как подобную вещь сделать?

-- 
С уважением,
 Александр                            mailto:aaa@inrecolan.com

Девиз дня: ...с праздничным приветом идет коллектив сумасшедшего дома ╧5!



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Comm] Переконвертация имён файлов на ext3
  2006-02-24 19:33 ` Denis Kirienko
@ 2006-02-24 19:40   ` Aleksey Fedoseev
  2006-02-24 20:58     ` Re[2]: " Alexandr A. Alexandrov
  2006-02-24 22:10     ` Alexandr A. Alexandrov
  0 siblings, 2 replies; 11+ messages in thread
From: Aleksey Fedoseev @ 2006-02-24 19:40 UTC (permalink / raw)
  To: ALT Linux Community

> Что-то не очень понятно, что сделать нужно, но, по-видимому, что-то вроде
> 
> for f in * ; do mv $f `echo $f | iconv -f KOI-8 -t UTF-8` ; done
> 
> Это если нет пробелов в именах...

Только все имена лучше брать в кавычки ("$f").

Вполне рабочий способ. Единственная проблема может возникннуть с
HTML-файлами, ссылающимися на какие-то локальные файлы и директории в
русских буквах (например, Страница.files-директории).

-- 
Aleksey Fedoseev
jabber: dralex@jabber.ru
pgp keyserver: pgp.mit.edu, key id: 69676F0E


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re[2]: [Comm] Переконвертация имён файлов на ext3
  2006-02-24 19:40   ` Aleksey Fedoseev
@ 2006-02-24 20:58     ` Alexandr A. Alexandrov
  2006-02-24 22:10     ` Alexandr A. Alexandrov
  1 sibling, 0 replies; 11+ messages in thread
From: Alexandr A. Alexandrov @ 2006-02-24 20:58 UTC (permalink / raw)
  To: Aleksey Fedoseev; +Cc: ALT Linux Community

Доброго времени суток!

Friday, February 24, 2006, 10:40:02 PM, вы писали:

>> Что-то не очень понятно, что сделать нужно, но, по-видимому, что-то вроде
>> 
>> for f in * ; do mv $f `echo $f | iconv -f KOI-8 -t UTF-8` ; done
>> 
>> Это если нет пробелов в именах...

AF> Только все имена лучше брать в кавычки ("$f").

AF> Вполне рабочий способ. Единственная проблема может возникннуть с
AF> HTML-файлами, ссылающимися на какие-то локальные файлы и директории в
AF> русских буквах (например, Страница.files-директории).

  Мда,   везде есть некоторые проблемы. Более-менее правильная команда
выглядит, на самом деле, так:

for f in *.* ; do cp "$f" ~/tmp/"`echo "$f" | iconv -f CP1251 -t UTF8`" ; done

то  есть, конечно, в кавычки надо брать не только значение переменной,
но и результат перекодировки.

  convmv  задействовать  не  получилось  -  но,  видимо,  тут какие-то
перекодировки   были   при   копировании   (копировали   без   меня):
подмонтировав  диск, сложили в каталог кучу файлов, а сейчас я не могу
эту  же кучу файлов скопировать из-за конфликта имён - и каким образом
их удалось положить все вместе в один каталог мне теперь неведомо. :-)

  Ну да ладно - худо-бедно проблему решили.

-- 
С уважением,
 Александр                            mailto:aaa@inrecolan.com

Девиз дня: Стоит только Чубайсу рот открыть, ему тут же насуют, будьте любезны. (Черномырдин)



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re[2]: [Comm] Переконвертация имён файлов на ext3
  2006-02-24 19:40   ` Aleksey Fedoseev
  2006-02-24 20:58     ` Re[2]: " Alexandr A. Alexandrov
@ 2006-02-24 22:10     ` Alexandr A. Alexandrov
  2006-02-25 14:15       ` Re[3]: " Alexandr A. Alexandrov
  2006-02-26 12:39       ` Re[2]: " ABATAPA
  1 sibling, 2 replies; 11+ messages in thread
From: Alexandr A. Alexandrov @ 2006-02-24 22:10 UTC (permalink / raw)
  To: ALT Linux Community

Доброго времени суток!

Friday, February 24, 2006, 10:40:02 PM, вы писали:

>> Что-то не очень понятно, что сделать нужно, но, по-видимому, что-то вроде
>> 
>> for f in * ; do mv $f `echo $f | iconv -f KOI-8 -t UTF-8` ; done
>> 
AF> Только все имена лучше брать в кавычки ("$f").

AF> Вполне рабочий способ. Единственная проблема может возникннуть с
AF> HTML-файлами, ссылающимися на какие-то локальные файлы и директории в
AF> русских буквах (например, Страница.files-директории).

Пытался сделать всё вообще одной командой - чтобы и рекурсивно по всем
каталогам  пройтись. Но почему-то не удалось победить вариант, когда в
именах каталогов пробелы. Делал так:

for f in `find * -print0 | xargs -0` ; do install -D "$f" ~/tmp/"`echo "$f" | iconv -f CP1251 -t UTF8`" ; done

Вроде  как  find  *  -print0  |  xargs -0 должно бы разделить список с
помощью нулей?

-- 
С уважением,
 Александр                            mailto:aaa@inrecolan.com

Девиз дня: Бояться ошибиться ≈ это уже ошибка. 



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Comm] Переконвертация имён файлов на ext3
  2006-02-24 19:35 ` Alexandr A. Alexandrov
@ 2006-02-25  9:45   ` Sergey Lizogub
  0 siblings, 0 replies; 11+ messages in thread
From: Sergey Lizogub @ 2006-02-25  9:45 UTC (permalink / raw)
  To: Alexandr A. Alexandrov, ALT Linux Community

[-- Attachment #1: Type: text/plain, Size: 647 bytes --]

Fri, 24 Feb 2006 22:35:29 +0300
Alexandr A. Alexandrov:

> Доброго времени суток!
> 
>   Спасибо, подсказали: есть такая вещь как convmv. Сейчас попробую.

	Кстати, сделал на основе  convmv пару скриптиков. Пользоваться
следующим образом (в примере перекодировка из koi8-r в cp1251 всех
низлежащих файлов и директорий:	
1) проверка:  convmv_test.sh  koi8-r cp1251 ..
2) реальное изменение convmv.sh koi8-r cp1251  ..

	Если лень нажимать каждый раз y/n, то можно убрать ключ -i, но вся
ответственность падёт на самого "злобного Буратино" :-)
	Любые предложения по оптимизации скриптов принимаются с благодарностью
;-)
	С уважением,
	Сергей Лизогуб

[-- Attachment #2: convmv.sh --]
[-- Type: application/x-sh, Size: 225 bytes --]

[-- Attachment #3: convmv_test.sh --]
[-- Type: application/x-sh, Size: 216 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re[3]: [Comm] Переконвертация имён файлов на ext3
  2006-02-24 22:10     ` Alexandr A. Alexandrov
@ 2006-02-25 14:15       ` Alexandr A. Alexandrov
  2006-02-26 12:39       ` Re[2]: " ABATAPA
  1 sibling, 0 replies; 11+ messages in thread
From: Alexandr A. Alexandrov @ 2006-02-25 14:15 UTC (permalink / raw)
  To: ALT Linux Community

Доброго времени суток!

Saturday, February 25, 2006, 1:10:50 AM, вы писали:

>>> Что-то не очень понятно, что сделать нужно, но, по-видимому, что-то вроде
>>> 
>>> for f in * ; do mv $f `echo $f | iconv -f KOI-8 -t UTF-8` ; done
>>> 
AF>> Только все имена лучше брать в кавычки ("$f").

AAA> Пытался сделать всё вообще одной командой - чтобы и рекурсивно по всем
AAA> каталогам  пройтись. Но почему-то не удалось победить вариант, когда в
AAA> именах каталогов пробелы. Делал так:

AAA> for f in `find * -print0 | xargs -0` ; do install -D "$f"
AAA> ~/tmp/"`echo "$f" | iconv -f CP1251 -t UTF8`" ; done

  Видимо,  не  хватает  знаний  по  шеллу..  :-( Вот что делаю, создав
тестовый каталог и тестовый файл:

[aaa@aaa test]$ find * -print | sed -e 's/.*/"&"/g'
"каталог с пробелами"
"каталог с пробелами/файл с пробелами.ф"

[aaa@aaa test]$ for f in `find * -print | sed -e 's/.*/"&"/g'`; do echo "$f" ; done
"каталог
с
пробелами"
"каталог
с
пробелами/файл
с
пробелами.ф"

  То  есть  в  шелле  пробелы получаются неэкранированными. Пробовал с
помощью  сед-а  заменить  пробелы  на  "\  "  -  но  не помогло... Как
правильно?

-- 
С уважением,
 Александр

Девиз дня: Не так страшен Карлсон, как его пропеллер...














^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Comm] Переконвертация имён файлов на ext3
  2006-02-24 19:00 [Comm] Переконвертация имён файлов на ext3 Alexandr A. Alexandrov
  2006-02-24 19:33 ` Denis Kirienko
  2006-02-24 19:35 ` Alexandr A. Alexandrov
@ 2006-02-26 12:32 ` ABATAPA
  2 siblings, 0 replies; 11+ messages in thread
From: ABATAPA @ 2006-02-26 12:32 UTC (permalink / raw)
  To: Alexandr A. Alexandrov, ALT Linux Community

24 февраля 2006 22:00, Alexandr A. Alexandrov написал:
>   На  один  из  его  дисков  скопировали  данные  из подмонтированного
> винчестера  с  ext3,  на  котором  были,  в  том  числе,  и  файлы  из
> samba-ресурса.  Они  хранились  на  диске в koi-8.
Еще (к уже высказанным) вариантам: подмонтировать fat32 диск в нужной 
codepage, скопировать, перемонтировать в правильную, скопировать. :)
-- 
ABATAPA


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Re[2]: [Comm] Переконвертация имён файлов на ext3
  2006-02-24 22:10     ` Alexandr A. Alexandrov
  2006-02-25 14:15       ` Re[3]: " Alexandr A. Alexandrov
@ 2006-02-26 12:39       ` ABATAPA
  2006-02-26 19:11         ` Re[4]: " Alexandr A. Alexandrov
  1 sibling, 1 reply; 11+ messages in thread
From: ABATAPA @ 2006-02-26 12:39 UTC (permalink / raw)
  To: Alexandr A. Alexandrov, ALT Linux Community

25 февраля 2006 01:10, Alexandr A. Alexandrov написал:
> Пытался сделать всё вообще одной командой - чтобы и рекурсивно по всем
> каталогам  пройтись. Но почему-то не удалось победить вариант, когда в
> именах каталогов пробелы. Делал так:
>
> for f in `find * -print0 | xargs -0` ; do install -D "$f" ~/tmp/"`echo "$f"
> | iconv -f CP1251 -t UTF8`" ; done
Тезка, не нужно делать ТАК!
> Вроде  как  find  *  -print0  |  xargs -0 должно бы разделить список с
> помощью нулей?
Не нулей, а символа с кодом 0x0! Так что в приведенной Вами схемы этого просто 
НЕ БУДЕТ.
-- 
ABATAPA


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re[4]: [Comm] Переконвертация имён файлов на ext3
  2006-02-26 12:39       ` Re[2]: " ABATAPA
@ 2006-02-26 19:11         ` Alexandr A. Alexandrov
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandr A. Alexandrov @ 2006-02-26 19:11 UTC (permalink / raw)
  To: ABATAPA; +Cc: ALT Linux Community

Доброго времени суток!

Sunday, February 26, 2006, 3:39:24 PM, вы писали:

>> Пытался сделать всё вообще одной командой - чтобы и рекурсивно по всем
>> каталогам  пройтись. Но почему-то не удалось победить вариант, когда в
>> именах каталогов пробелы. Делал так:
>>
>> for f in `find * -print0 | xargs -0` ; do install -D "$f" ~/tmp/"`echo "$f"
>> | iconv -f CP1251 -t UTF8`" ; done
A> Тезка, не нужно делать ТАК!

  Об этом я догадываюсь. :-) Но меня интересует - КАК надо! :-)

  Пока я пришёл к варианту

  find dir/* -exec ./proc {} \;

  А в proc -

#!/bin/sh
A=`echo $1 | sed -e 's/\ /\\\ /g'`
echo $A | xargs -i% mv % `echo % | iconv -f CP1251 -t UTF8`

  Но   в   этом  варианте почему-то подстановка не работает. Причём не
понимаю,  почему.  Я  пробовал `echo % | sed -e 's/x/X/g'` на тестовых
файлах  -  чтобы не грешить на перекодировки всякие - типа, заменить в
именах  файлов  маленькие  х  на  большие просто. Так mv сообщает, что
файлы идентичны и он ничего делать не будет. :-(

-- 
С уважением,
 Александр                            mailto:aaa@inrecolan.com

Девиз дня: Не надо путать причину и следствие. Особенно не надо путать следствие.



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2006-02-26 19:11 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-02-24 19:00 [Comm] Переконвертация имён файлов на ext3 Alexandr A. Alexandrov
2006-02-24 19:33 ` Denis Kirienko
2006-02-24 19:40   ` Aleksey Fedoseev
2006-02-24 20:58     ` Re[2]: " Alexandr A. Alexandrov
2006-02-24 22:10     ` Alexandr A. Alexandrov
2006-02-25 14:15       ` Re[3]: " Alexandr A. Alexandrov
2006-02-26 12:39       ` Re[2]: " ABATAPA
2006-02-26 19:11         ` Re[4]: " Alexandr A. Alexandrov
2006-02-24 19:35 ` Alexandr A. Alexandrov
2006-02-25  9:45   ` Sergey Lizogub
2006-02-26 12:32 ` ABATAPA

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git