Как скопировать текст фрагментов из потока файлов из find

Проприетарный драйвер NVIDIA не поддерживает консоли с кадровым буфером.

Вот еще одна соответствующая ветка .

3
30.03.2019, 23:08
4 ответа

В Perl вы можете использовать eof , что будет верно для каждого конца файла:

find. -type f -name '*.org' -exec perl -ne 'print if /\* Learnings/.. eof' {} +

Использование формы +для -execработает аналогичноxargs:— аргументы для указанной команды создаются путем добавления всех найденных файлов.

2
27.01.2020, 21:17

С реализацией GNU sedвы можете использовать опцию -s, также известную как --separate, для каждого файла, который будет обрабатываться отдельно в этом отношении.

find. -name '*.org' -type f -exec sed -s '/\* Learnings/,$!d' {} +

Сawk:

find. -name '*.org' -type f -exec awk '
  FNR == 1 {found = 0}; /\* Learnings/ {found = 1}; found' {} +
2
27.01.2020, 21:17

Если это не какое-то домашнее задание; -), вы можете использовать тот же трюк, что и здесь с GNU или *BSD grep:

grep -hrFA 10000 '* Learnings' directory

Замените 10000 чем-то большим, если ваши файлы содержат более 10000 строк.

0
27.01.2020, 21:17

изучить его в gnu sed,

find ~/org/journal -iname "*.org" -type f -exec sed -nE '/\*\sLearnings/,$ p' '{}' +

чтобы действительно отредактировать и сохранить его, с источником в файле с расширением.o,

find ~/org/journal -iname "*.org" -type f -exec sed -i.o -nE '/\*\sLearnings/,$ p' '{}' +
0
27.01.2020, 21:17

Теги

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