Привет.
делаю архив:
zip -q data.zip `find /path/data -type f \( -iregex ".*/extforms/prnforms/.*" \)но мне нужно, чтобы названия файлов переконвертировались в другую кодировку, конкретно в dos и уже в архиве лежали в новой кодировке (только названия).
уже и так и сяк вокруг iconv -f KOI8R -t CP866, xargs, mv и тп, не выходит каменный цветок.Направте в нужное русло плиз.
вот честно скозь маны и практику пытался понять, в чём прелесть find...
regexp в find не умеет работать с кириллицей да и \x80-\x99 он тоже не понимает.
>вот честно скозь маны и практику пытался понять, в чём прелесть
>find...
>regexp в find не умеет работать с кириллицей да и \x80-\x99 он
>тоже не понимает.
Почему не умеет? Умеет. Локаль должна быть правильно выставлена.
>>вот честно скозь маны и практику пытался понять, в чём прелесть
>>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
>>>вот честно скозь маны и практику пытался понять, в чём прелесть
>>>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" же находит?
>>>>вот честно скозь маны и практику пытался понять, в чём прелесть
>>>>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. но о тяжёлых конструкциях можно забыть.
[...]
>Направте в нужное русло плиз.Поищите на форуме. Я где-то уже натыкался на вопрос про find + iconv
Ну и, видимо, придётся действовать в несколько этапов: найти файлы, перенести во временный каталог с переименованием, а потом уже запаковать этот временный каталог в архив. Я бы так делал.
>Привет.
>делаю архив:
>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, чтобы он сперва пробегал по директории и только потом переименовывал саму директорию.
НЕ ЗАПУСКАЙТЕ ВСЛЕПУЮ, я это строчку по памяти написал, мог наколбасить :-)
>>Привет.
>>делаю архив:
>>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, всё работает как мне и нужно.спасибо всем.
>Привет.
>делаю архив:
>zip -q data.zip `find /path/data -type f \( -iregex ".*/extforms/prnforms/.*" \)
>
>но мне нужно, чтобы названия файлов переконвертировались в другую кодировку, конкретно в
>dos и уже в архиве лежали в новой кодировке (только названия).
>
>уже и так и сяк вокруг iconv -f KOI8R -t CP866, xargs,
>mv и тп, не выходит каменный цветок.
>
>Направте в нужное русло плиз.важно переконвертировать названия или распаковать на другой оси с нормальными именами? если второе, то можно использовать rar. у него имена в уникоде храняться...проблем быть не должно.