Как рекурсивно напечатать текст с заголовком с помощью команды find - PullRequest
0 голосов
/ 31 января 2020

Я использовал команду find, которая выплевывает список файлов, содержащих данную строку, выполнив

find /dir -name cat

, и я могу напечатать содержимое, добавив -exe c cat {} в конец

Однако я хотел иметь возможность добавлять заголовок перед каждым файлом, чтобы разделить их, т.е.

***** путь / файл *****, чтобы он выводился на печать

*****dir/cat.txt*****
some text
*****dir/cat2.txt*****
some text

Есть ли способ сделать это? Также, если бы я хотел отобразить только содержимое одного файла, который получен командой find, т.е.

find [path] -name [string] | head -1

и добавление -exe c cat невозможно. как бы я это сделал?

Спасибо

1 Ответ

2 голосов
/ 31 января 2020

Команда find может принимать несколько параметров -exec и будет запускать каждый из них для каждого файла.

Таким образом, вы можете использовать:

find . -name \*.txt -exec echo "***** {} *****" \; -exec cat {} \;

И для новой второй части вашего вопроса:

find . -name \*.txt -exec echo "***** {} *****" \; -exec cat {} \; -quit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...