>>Во Фре 4 есть каталог с русским именем, в нем много файлов,
>>тоже с русскими именами, однако из-за всяких недоделок все имена оказались
>>в кодировке win1251, хочу перевести в KOI8-R, то есть неправильно отображаются.
>>Наваял скрипт:
>>
>>for i in `ls -1wR`;
>> do mv "'$i'" `echo "'$i'" | /usr/local/bin/iconv -f CP1251
>>-t KOI8-R`;
>>done
>>
>>То есть каждый файл из вывода команды ls перемещается в новый файл
>>с перекодированным именем.
>>Все бы хорошо, но имена файлов содержат пробелы, из-за этого получается, что
>>для файла с названием 'фото 1.jpg' появляются две переменные 'фото' и
>>'1.jpg'. Как побороть, не знаю. По идее, надо как-то сообщить, что
>>разделителем служит не пробел, а перевод строки.
>>У кого какие мысли? Заранее благодарен.
>
>взять `echo "'$i'" | /usr/local/bin/iconv -f CP1251 -t KOI8-R` в двойные кавычки?
>
бред (без обид)
парень получает строковый массив через ls (имена файлов)
допустим у нас файлы: aaa, bbb, ccc
массив будет {aaa bbb ccc}, если в именах файлов пробелы:
aaa, "bb b", "c cc", массив получится НЕ ИЗ ТРЕХ элементов, а:
{ aaa bb b c cc } - так что предложение мягко говоря бестолковое, хоть
мульон кавычек.
подсказка такая, например найти старый пакет kermit'а и взять оттуда и
поправить под себя утилиту конвертации имен файлов и директорий xxu.c
- я так для себя сделал и выложид на свою страницу, к сожалению страница
умерла.
другой вариант, использовать ls -m
например попробуй:
[alone]~/test > ls -la
total 28
drwxr-xr-x 2 lavr sysct 512 21 сен 18:04 .
drwxr-xr-x 77 lavr sysct 21504 22 сен 10:31 ..
-rw-r--r-- 1 lavr sysct 0 21 сен 17:40 111 222
-rw-r--r-- 1 lavr sysct 0 21 сен 17:40 333 444 555
-rw-r--r-- 1 lavr sysct 0 21 сен 17:40 666 77 99 00
-rw-r--r-- 1 lavr sysct 0 21 сен 17:40 ashdjfk asdfhjk
-rw-r--r-- 1 lavr sysct 62 21 сен 18:11 la
-rw-r--r-- 1 lavr sysct 49 21 сен 17:34 lala
[alone]~/test > ls -m | tr "," "\n" | sed -e "s/^ //" | tr " " "_"
111_222
333_444_555
666_77_99_00
ashdjfk_asdfhjk
la
lala
[alone]~/test >
вот тебе массив без пробелов, они заменены на "_"
Sorry, коряво и некрасиво, просто сразу навскидку за x-секунд пришло
в голову использование tr (man tr)
Можно sed+awk, самое красивое и гибкое будет наверное на perl'е
>// wbr