* [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