The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"хитрое преобразование кодировки для архива"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"хитрое преобразование кодировки для архива"  
Сообщение от Cyrus_user on 11-Июл-07, 16:24 
Привет.
делаю архив:
zip -q data.zip `find /path/data -type f \( -iregex ".*/extforms/prnforms/.*" \)

но мне нужно, чтобы названия файлов переконвертировались в другую кодировку, конкретно в dos и уже в архиве лежали в новой кодировке (только названия).
уже и так и сяк вокруг iconv -f KOI8R -t CP866, xargs, mv и тп, не выходит каменный цветок.

Направте в нужное русло плиз.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "хитрое преобразование кодировки для архива"  
Сообщение от Cyrus_user on 12-Июл-07, 08:52 
вот честно скозь маны  и практику пытался понять, в чём прелесть find...
regexp в find не умеет работать с кириллицей да и \x80-\x99 он тоже не понимает.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "хитрое преобразование кодировки для архива"  
Сообщение от Forth (??) on 12-Июл-07, 09:30 
>вот честно скозь маны  и практику пытался понять, в чём прелесть
>find...
>regexp в find не умеет работать с кириллицей да и \x80-\x99 он
>тоже не понимает.
Почему не умеет? Умеет. Локаль должна быть правильно выставлена.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "хитрое преобразование кодировки для архива"  
Сообщение от Cyrus_user on 12-Июл-07, 13:59 
>>вот честно скозь маны  и практику пытался понять, в чём прелесть
>>find...
>>regexp в find не умеет работать с кириллицей да и \x80-\x99 он
>>тоже не понимает.
>Почему не умеет? Умеет. Локаль должна быть правильно выставлена.

наверно я плохо читал man
$touch рус.txt
$touch rus.txt
$find -type f -regex ".*[a-z]+\.txt"
$./rus.txt
$ find -type f -regex ".*[а-я]+\.txt"
$
что-то не сработало, где у меня ошибка? или мне нужно так: а?б?в?..ю?я?
$ find -type f -regex ".*рус\.txt"
./рус.txt

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "хитрое преобразование кодировки для архива"  
Сообщение от Forth (??) on 12-Июл-07, 14:18 
>>>вот честно скозь маны  и практику пытался понять, в чём прелесть
>>>find...
>>>regexp в find не умеет работать с кириллицей да и \x80-\x99 он
>>>тоже не понимает.
>>Почему не умеет? Умеет. Локаль должна быть правильно выставлена.
>
>наверно я плохо читал man
>$touch рус.txt
>$touch rus.txt
>$find -type f -regex ".*[a-z]+\.txt"
>$./rus.txt
>$ find -type f -regex ".*[а-я]+\.txt"
>$
>что-то не сработало, где у меня ошибка? или мне нужно так: а?б?в?..ю?я?
>
>$ find -type f -regex ".*рус\.txt"
>./рус.txt
Тут уже что-то связанное с тонкостями указания кириллических диапазонов в регексах.
По ".*рус\.txt" же находит?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "хитрое преобразование кодировки для архива"  
Сообщение от Cyrus_user on 13-Июл-07, 05:47 
>>>>вот честно скозь маны  и практику пытался понять, в чём прелесть
>>>>find...
>>>>regexp в find не умеет работать с кириллицей да и \x80-\x99 он
>>>>тоже не понимает.
>>>Почему не умеет? Умеет. Локаль должна быть правильно выставлена.
>>
>>наверно я плохо читал man
>>$touch рус.txt
>>$touch rus.txt
>>$find -type f -regex ".*[a-z]+\.txt"
>>$./rus.txt
>>$ find -type f -regex ".*[а-я]+\.txt"
>>$
>>что-то не сработало, где у меня ошибка? или мне нужно так: а?б?в?..ю?я?
>>
>>$ find -type f -regex ".*рус\.txt"
>>./рус.txt

>Тут уже что-то связанное с тонкостями указания кириллических диапазонов в регексах.
>По ".*рус\.txt" же находит?

это я показал что локаль настроена

мне кажется regexp в find просто недореализован.. типа вот вам |xargs egrep bla-bla. но о тяжёлых конструкциях можно забыть.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "хитрое преобразование кодировки для архива"  
Сообщение от phpcoder email(??) on 12-Июл-07, 09:01 
[...]
>Направте в нужное русло плиз.

Поищите на форуме. Я где-то уже натыкался на вопрос про find + iconv
Ну и, видимо, придётся действовать в несколько этапов: найти файлы, перенести во временный каталог с переименованием, а потом уже запаковать этот временный каталог в архив. Я бы так делал.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "хитрое преобразование кодировки для архива"  
Сообщение от A on 12-Июл-07, 09:19 
>Привет.
>делаю архив:
>zip -q data.zip `find /path/data -type f \( -iregex ".*/extforms/prnforms/.*" \)
>
>но мне нужно, чтобы названия файлов переконвертировались в другую кодировку, конкретно в
>dos и уже в архиве лежали в новой кодировке (только названия).
>
>уже и так и сяк вокруг iconv -f KOI8R -t CP866, xargs,
>mv и тп, не выходит каменный цветок.
>
>Направте в нужное русло плиз.

я в таких случаях их просто сперва переменовываю (хотя можно наверно и проще). сейчас скрипта нет под рукой, но выглядит примерно так:
find -d /dir -exec mv "{}" `echo {} | iconv -f KOI8R -t CP866` \;
главное -d, чтобы он сперва пробегал по директории и только потом переименовывал саму директорию.
НЕ ЗАПУСКАЙТЕ ВСЛЕПУЮ, я это строчку по памяти написал, мог наколбасить :-)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "хитрое преобразование кодировки для архива"  
Сообщение от Cyrus_user on 12-Июл-07, 13:50 
>>Привет.
>>делаю архив:
>>zip -q data.zip `find /path/data -type f \( -iregex ".*/extforms/prnforms/.*" \)
>>
>>но мне нужно, чтобы названия файлов переконвертировались в другую кодировку, конкретно в
>>dos и уже в архиве лежали в новой кодировке (только названия).
>>
>>уже и так и сяк вокруг iconv -f KOI8R -t CP866, xargs,
>>mv и тп, не выходит каменный цветок.
>>
>>Направте в нужное русло плиз.
>
>я в таких случаях их просто сперва переменовываю (хотя можно наверно и
>проще). сейчас скрипта нет под рукой, но выглядит примерно так:
>find -d /dir -exec mv "{}" `echo {} | iconv -f KOI8R
>-t CP866` \;
>главное -d, чтобы он сперва пробегал по директории и только потом переименовывал
>саму директорию.
>НЕ ЗАПУСКАЙТЕ ВСЛЕПУЮ, я это строчку по памяти написал, мог наколбасить :-)
>

до этого я уже доходил. всё равно приходится делать всё в несколько этапов с временным файлом.
в принципе перекодировку в архив чего мне нужно по регеспам сделал на perl, всё работает как мне и нужно.

спасибо всем.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "хитрое преобразование кодировки для архива"  
Сообщение от Rey (??) on 12-Июл-07, 09:23 
>Привет.
>делаю архив:
>zip -q data.zip `find /path/data -type f \( -iregex ".*/extforms/prnforms/.*" \)
>
>но мне нужно, чтобы названия файлов переконвертировались в другую кодировку, конкретно в
>dos и уже в архиве лежали в новой кодировке (только названия).
>
>уже и так и сяк вокруг iconv -f KOI8R -t CP866, xargs,
>mv и тп, не выходит каменный цветок.
>
>Направте в нужное русло плиз.

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру