Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.221.112.220] |
|
Сообщ.
#1
,
|
|
|
Господа, у меня следующий вопрос.
Сначала я ищу файлы в /usr/lib с расширением *.о: find '/usr/lib' -type f -iname '*.o' | more Затем я хочу послать все это на ввод команды nm, которая читает объектники: find '/usr/lib' -type f -iname '*.o' | nm - ничего не получается - результат такой как будто я ввел просто одну команду безаргументов. Может что-то нетак. Буду очень благодарен подсказкам. Спасибо! |
Сообщ.
#2
,
|
|
|
find '/usr/lib' -type f -iname '*.o' -exec nm {} \;
100\% толко что проверил. -exec вызывает для каждого найденного файла nm {} держателль места для каждого найденного файла \; обязателное окончание при -exec '\' маскирует ';' man find |
Сообщ.
#3
,
|
|
|
Способ "find '/usr/lib' -type f -iname '*.o' -exec nm {} \;" хорош, но есть и альтернативный подход, который сработает быстрее на большом количестве файлов за счет того, что "nm" будет вызываться не для каждого аргумента, а для групп аргументов:
find '/usr/lib' -type f -iname '*.o' | xargs nm ключевая фишка здесь - прога xargs. Не уверен, что она есть на всех юниксах - отсюда могу проверить только HP-UX 11.0 - работает отлично. По-умолчанию xargs группирует так, чтоб не превысить ARG_MAX и LINE_MAX, но можно в командной строке сказать, по сколько аргументов объединять с помощью опций -n, -l, -x... |