* [Comm] find ... -exec и выходные потоки
@ 2005-09-26 12:15 spider
2005-09-26 12:45 ` [Comm] " Michael Shigorin
2005-09-26 22:50 ` [Comm] " Dmitry V. Levin
0 siblings, 2 replies; 6+ messages in thread
From: spider @ 2005-09-26 12:15 UTC (permalink / raw)
To: ALT Linux Community
Уважаемые господа, прошу не пинать, если спросил что не так.
Есть куча файлов типа foo-???.ext. Эти файлы нужно обрабатывать
программами из пакета netpbm. Эти проги принимают на входе имя файла
и отдают результат в stdout. Т.е. обычный их запуск выглядит типа так
$ ppmtopgm foo-001.ppm > foo-001.pgm
или с использованием фильтров
$ ppmtopgm foo-001.ppm | pnmtopnm > foo-001.pgm
все это работает для ручного запуска, но как только все это
попадает в строку -exec от find, наступает (_*_)
строка
$ find -name 'foo-*.ppm' -exec ppmtopgm {} '>' {}.pgm \;
вместо того, чтобы обработать все файлы каталога
порождает пустой файл {}.pgm.
Как всетаки правильно запускать команды с потоками через
find -exec?
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Comm] Re: find ... -exec и выходные потоки
2005-09-26 12:15 [Comm] find ... -exec и выходные потоки spider
@ 2005-09-26 12:45 ` Michael Shigorin
2005-09-27 8:43 ` spider
2005-09-26 22:50 ` [Comm] " Dmitry V. Levin
1 sibling, 1 reply; 6+ messages in thread
From: Michael Shigorin @ 2005-09-26 12:45 UTC (permalink / raw)
To: ALT Linux Community
On Mon, Sep 26, 2005 at 03:15:10PM +0300, spider wrote:
> $ find -name 'foo-*.ppm' -exec ppmtopgm {} '>' {}.pgm \;
-exec 'sh -c ppmtopgm {} > {}.pgm' \;
?
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
---- visit our conference (Oct 1):
-- http://conference.osdn.org.ua
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] find ... -exec и выходные потоки
2005-09-26 12:15 [Comm] find ... -exec и выходные потоки spider
2005-09-26 12:45 ` [Comm] " Michael Shigorin
@ 2005-09-26 22:50 ` Dmitry V. Levin
2005-09-27 8:55 ` spider
1 sibling, 1 reply; 6+ messages in thread
From: Dmitry V. Levin @ 2005-09-26 22:50 UTC (permalink / raw)
To: ALT Linux general discussion list
[-- Attachment #1: Type: text/plain, Size: 914 bytes --]
On Mon, Sep 26, 2005 at 03:15:10PM +0300, spider wrote:
[...]
> строка
>
> $ find -name 'foo-*.ppm' -exec ppmtopgm {} '>' {}.pgm \;
>
> вместо того, чтобы обработать все файлы каталога
> порождает пустой файл {}.pgm.
>
> Как всетаки правильно запускать команды с потоками через
> find -exec?
Пожалуйста, прочтите документацию, там описан ваш случай:
$ man find |colcrt |sed -ne '/^EXAMPLES/,/^E/ p' |sed -ne '/{}/,/\.$/ p'
find . -type f -exec file '{}' \;
Runs `file' on every file in or below the current directory. Notice
that the braces are enclosed in single quote marks to protect them from
interpretation as shell script punctuation. The semicolon is simi-
larly protected by the use of a backslash, though ';' could have been
used in that case also.
P.S. В старых версиях пакета findutils этого примера нет.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Re: find ... -exec и выходные потоки
2005-09-26 12:45 ` [Comm] " Michael Shigorin
@ 2005-09-27 8:43 ` spider
2005-09-27 12:19 ` Michael Shigorin
0 siblings, 1 reply; 6+ messages in thread
From: spider @ 2005-09-27 8:43 UTC (permalink / raw)
To: shigorin, ALT Linux Community
Michael Shigorin пишет:
>On Mon, Sep 26, 2005 at 03:15:10PM +0300, spider wrote:
>
>
>>$ find -name 'foo-*.ppm' -exec ppmtopgm {} '>' {}.pgm \;
>>
>>
>
>-exec 'sh -c ppmtopgm {} > {}.pgm' \;
>?
>
>
почти так, только закавычить пришлось чуть иначе
-exec sh -c 'ppmtopgm {} > {}.pgm' \;
Спасибо за подсказку.
>------------------------------------------------------------------------
>
>_______________________________________________
>Community mailing list
>Community@altlinux.ru
>https://lists.altlinux.ru/mailman/listinfo/community
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] find ... -exec и выходные потоки
2005-09-26 22:50 ` [Comm] " Dmitry V. Levin
@ 2005-09-27 8:55 ` spider
0 siblings, 0 replies; 6+ messages in thread
From: spider @ 2005-09-27 8:55 UTC (permalink / raw)
To: ALT Linux Community
Dmitry V. Levin пишет:
>Пожалуйста, прочтите документацию, там описан ваш случай:
>
>$ man find |colcrt |sed -ne '/^EXAMPLES/,/^E/ p' |sed -ne '/{}/,/\.$/ p'
> find . -type f -exec file '{}' \;
>
> Runs `file' on every file in or below the current directory. Notice
> that the braces are enclosed in single quote marks to protect them from
> interpretation as shell script punctuation. The semicolon is simi-
> larly protected by the use of a backslash, though ';' could have been
> used in that case also.
>
>P.S. В старых версиях пакета findutils этого примера нет.
>
>
$ man find | col -b | grep -i runs
$
Наверное у меня старая версия.
$ rpm -qa | grep findut
findutils-4.1.20-alt2
$
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Re: find ... -exec и выходные потоки
2005-09-27 8:43 ` spider
@ 2005-09-27 12:19 ` Michael Shigorin
0 siblings, 0 replies; 6+ messages in thread
From: Michael Shigorin @ 2005-09-27 12:19 UTC (permalink / raw)
To: ALT Linux Community
On Tue, Sep 27, 2005 at 11:43:53AM +0300, spider wrote:
> >>$ find -name 'foo-*.ppm' -exec ppmtopgm {} '>' {}.pgm \;
> >-exec 'sh -c ppmtopgm {} > {}.pgm' \;
> >?
> почти так, только закавычить пришлось чуть иначе
> -exec sh -c 'ppmtopgm {} > {}.pgm' \;
Упс, да, конечно.
> Спасибо за подсказку.
YW :)
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
---- visit our conference (Oct 1):
-- http://conference.osdn.org.ua
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2005-09-27 12:19 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-09-26 12:15 [Comm] find ... -exec и выходные потоки spider
2005-09-26 12:45 ` [Comm] " Michael Shigorin
2005-09-27 8:43 ` spider
2005-09-27 12:19 ` Michael Shigorin
2005-09-26 22:50 ` [Comm] " Dmitry V. Levin
2005-09-27 8:55 ` spider
ALT Linux Community general discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
public-inbox-index community
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.community
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git