& Ldquo; найти & Rdquo; Команда и передача его вывода через другую программу

Это не специфический вопрос для Ubuntu, он применим ко всем Unix / Linux.

Как я могу выполнить команду следующим образом:

 find .  -maxdepth 1 -type d  -print -exec svn info "{}"   | grep URL  \; 

Команда выше не делает то, что я хочу, я не могу передать вывод информации svn в grep. ]

Это работает, но вывод содержит гораздо больше, чем мне нужно:

 find .  -maxdepth 1 -type d  -print -exec svn info "{}"  \; 

Есть идеи?

1
задан 23 February 2011 в 22:31

4 ответа

Обычно я нахожу xargs намного более нормальный для использования, чем находка - исполнительная опция. Это особенно верно для ускорения вещей, так как отдельный "svn" не запускается для каждой строки вывода находки:

find . -maxdepth 1 -type d | xargs svn info | grep URL

Если Вы имеете дело с файлами со странными именами (пробелы, новые строки, и т.д.), просто добавьте -print0 найти и -0 к xargs:

find . -maxdepth 1 -type d -print0 | xargs -0 svn info | grep URL

Если Вы имеете дело с программой, которая может только взять 1 аргумент, можно использовать -n1 с xargs:

find . -maxdepth 1 -type d -print0 | xargs -0 -n1 svn info | grep URL
5
ответ дан 23 February 2011 в 22:31

Вам нужна оболочка для интерпретации трубы.

find . -maxdepth 1 -type d -print -exec sh -c 'LANG=C svn info "$1" | grep URL' _ {} \;

См. http://mywiki.wooledge.org/UsingFind для дополнительных примеров.

Хотя. Я бы просто использовал для этого цикл for:

for svndir in ./*/.svn/; do
    dir=${svndir%/.svn/}
    echo "$dir"
    LANG=C svn info "$dir" | grep URL
    # or maybe just: sed '5!d;q' "$svndir/entries"
done
0
ответ дан 23 February 2011 в 22:31

На самом деле я понял, что приведенное ниже делает то, что я хочу в этом случае:

  find .  -maxdepth 1 -type d  -print -exec svn info "{}"   \;  | grep URL

, но я все еще хотел бы знать, как я могу передать вывод внутри exec find

0
ответ дан 23 February 2011 в 22:31
find .  -maxdepth 1 -type d  -print -exec svn info "{}" \; | grep URL
0
ответ дан 23 February 2011 в 22:31

Другие вопросы по тегам:

Похожие вопросы: