[Comm] Имена файлов.

Alexander Kuprin =?iso-8859-1?q?ru=5Fclassic_=CE=C1_gts=2Elg=2Eua?=
Ср Апр 14 09:22:50 MSD 2004


On Wednesday 14 April 2004 07:55, Andrey Brindeew wrote:
> On Wed, Apr 14, 2004 at 10:31:22AM +0700, Yevgeny Manyashev wrote:
> > Имеются zip-архивы, сделанные в винде, с русскими именами файлов.
> > Вопрос: как перекодировать эти имена в koi8?
> > Команда
> > unzip -l 01.zip | iconv -f CP866 -t koi8
> >
> > сразу же обламывается.
>
> Почитай какую-нибудь детскую книжку по Юниксам.

Например, вот эту http://www.linux.org.ru/books/LDP/lug.html
Хотя ей уже 10 лет, но для общего ознакомления подойдёт. По крайней мере та 
часть, что относится не к "иксам".

> unzip у тебя пишет на диск, а iconv ждет от него данные на STDIN.

Но задачка интересная. Я попробовал её решить, использя find, но создать  
однострочник не вышло. :-\ Сперва я проверил такую конструкцию:

find *.doc -exec echo '{}' | iconv -f cp866 -t koi8-r ';' 

Работает. Потом решил усложнить

find *doc -exec mv -i '{}' `echo '{}' | iconv -f cp866 -t koi8-r` ';'

Не заработало. Не выполняется подстановка нового имени файла из 
`echo '{}' | iconv -f cp866 -t koi8-r`. В конце концов написал маленький 
скрипт dos2koi:

#!/bin/sh
mv $1 `echo $1 | iconv -f cp866 -t koi8-r`

который и вызывал при помощи find:

find *doc -exec ./dos2koi '{}' ';'

Так работает. Возможно я чего-то не знаю о find? Кто-нибудь может подсказать 
как подобную конструкцию реализовать одной строкой?

--
WBR, Alexadner Kuprin


Подробная информация о списке рассылки community