Я бы использовал1 find
с двумя -exec
действиями, например:
find . -type f -exec grep -qF SOME_STRING {} \; -exec sed 'COMMAND' {} \;
Вторая команда будет выполняться только если первая оценивается как true i. например, exit code 0
, поэтому sed
будет обрабатывать рассматриваемый файл, только если файл содержит SOME_STRING. Легко понять, как это работает:
find . -type f -exec grep -qF SOME_STRING {} \; -print
он должен перечислить только те файлы, которые содержат SOME_STRING. Конечно, вы всегда можете составить цепочку из более чем двух выражений, а также использовать операторы типа !
(отрицание), например:
find . -type f -exec grep -qF THIS {} \; ! -exec grep -qF THAT {} \; -print
перечислит только те файлы, которые содержат ЭТО, но не содержат ТО.
В любом случае, в вашем случае:
gfind /tmp/ -type f \( -name "*.h" -o -name "*.cpp" \) \
-exec ggrep -qF LARGE_INTEGER {} \; \
-exec gsed -i '1s/^/#include <stdint.h>\n/' {} \;
1
Я предполагаю, что ваш xargs
не поддерживает опцию -0
или --null
. Если это так, используйте следующую конструкцию:
find . -type f -exec grep -lFZ SOME_STRING {} + | xargs -0 gsed -s -i 'COMMAND'
т.е. в вашем случае:
gfind /tmp/ -type f \( -name "*.h" -o -name "*.cpp" \) \
-exec ggrep -lFZ LARGE_INTEGER {} + | \
xargs -0 gsed -s -i '1s/^/#include <stdint.h>\n/'
Она должна быть более эффективной, чем первая.
Кроме того, оба варианта будут работать с любыми именами файлов. Обратите внимание, что я использую grep
с -F
(фиксированная строка), так как он быстрее, поэтому удалите его, если вы планируете использовать regex вместо него.
Чтобы ответить на этот вопрос, следуйте по следу, начинающемуся с /etc/network/interfaces
, или, скорее, соответствующей справочной страницеinterfaces.5
. Поиск показывает, что это происходит изifupdown
илиifupdown2
. Глядя на соответствующие зависимости пакетов, видно, что они используют iproute2
и могут дополнительно использовать ppp
, rdnssd
и DHCP-клиент.
Чтение справочной страницы содержит дополнительную информацию, в частности, о поддержке беспроводной связи, которая обеспечиваетсяwireless-tools
иiw
. Многие другие пакеты предоставляют расширения ifupdown
.