On Tuesday 29 March 2005 17:26, Grigory Fateyev wrote: > 1. "Катим" выбранный файл по маске; > 2. Перекодируем вывод п.1; ок. > 3. Записываем вывод в $new; в _переменную_ new или файл $new? чтобы вывод команды засунуть в переменную есть как минимум два варианта: окружить команду `` (или $(), не суть важно) new=$(cat .. | iconv ... | some-command) или в конце: cat .. | iconv .. | some-command-like-grep | new=`cat` здесь в переменную new попадет stdout того что в апострофах - cat. а ее вывод ситуативно совпадает с ее stdin, это же cat. в итоге в переменной окажется то что вывела вся предыдущая цепочка. > 4. $new свою очередь обнуляет $old; что значит обнуляет? видимо, перекодированный текст из переменной new следует засунуть обратно в файл, имя которого в old. сделать echo $new > $old не получится, потому что ньюлайны превратятся в пробелы. нужно делать cat << EOF > my_new_file $new EOF здесь файл _называется_ my_new_file. если поставить cat << EOF > $my_new_file, то именем файла будет содержимое переменной my_new_file. теперь смотрим Ваш вариант > find -type f -name "*.txt" -exec bash -c 'old="{}"; cat $old | все ок. > iconv -c -f cp1251 -t koi8-r -o new=`cat /dev/null > $old` \; непонятно. ключ -o выводит stdout в файл имя которого идет после ключа. (кстати, в переменную так не засунешь). в Вашем случае файл будет называться "new=что-то-там". а это 'что-то там' будет очевидно пустое, потому что "cat > /dev/null > $old" на stdout ничего не выведет, и new=`...` будет развернуто в "new=". > Вроде должно работать? :) не-а. не должно ;-)