Как использовать команду «cat» в выводе команды «find»?

Возможно, я неправильно понял вопрос, но

ls -ls | grep 'Oct 26'> oct26.list

выдаст список файлов за 26 октября; то же самое можно сделать e. грамм. с часами, используя дополнительный grep "| grep 09:" и т. д. Затем сделайте со списком oct26.list все, что вам нужно.

13
26.06.2016, 22:35
4 ответа

Вы можете сделать это только с помощью find , используя действие -exec :

find /location -size 1033c -exec cat {} +

{} будет расширен до найденных файлов, а + позволит нам прочитать как можно больше аргументов при вызове cat , поскольку cat может принимать несколько аргументов.

Если ваша находка не имеет расширения + или вы хотите читать файлы один за другим:

find /location -size 1033c -exec cat {} \;

Если вы хотите использовать какие-либо параметры cat , выполните:

find /location -size 1033c -exec cat -n {} +
find /location -size 1033c -exec cat -n {} \;

Здесь я использую параметр -n , чтобы получить номера строк.

40
27.01.2020, 19:53

Используйте pipe и xargs

find /* -name pg_hba.conf | xargs cat

Если это не удается из-за отсутствия разрешений, вы можете использовать sudo, чтобы убедиться, что у вас есть разрешение на выполнение команды find в каталоге, который вы ищете.

 sudo find /* -name pg_hba.conf | xargs sudo cat
-2
27.01.2020, 19:53

Это будет печатать имя и содержимое текстовых (ascii )файлов -только рекурсивно..

find. -type f -exec grep -Iq. {} \; -print | xargs awk 'FNR==1{print FILENAME ":" $0; }'

Еще одна попытка

find. -type f -exec grep -Iq. {} \; -printf "\n%p:" -exec cat {} \;
0
27.01.2020, 19:53

Подстановка команд

Другим вариантом является использование Подстановки команд .Обертывание команды в $()запустит команду и заменит ее выводом.

cat $(find./inhere -size 1033c 2> /dev/null)

станет

cat./inhere/file1./inhere/file2./inhere/file3

Это более или менее эквивалентно использованию старого стиля переноса команд с обратными галочками:

cat `find./inhere -size 1033c 2> /dev/null`

Дополнительные сведения см. в документах, указанных выше

Bash выполняет расширение, выполняя команду в среде подоболочки и заменяя подстановку команды стандартным выводом команды с удалением всех завершающих строк новой строки. Встроенные символы новой строки не удаляются, но они могут быть удалены при разделении слов. Подстановка команды $(cat file)может быть заменена эквивалентной, но более быстрой $(< file).

Когда используется форма замены обратной кавычки в старом стиле -, обратная косая черта сохраняет свое буквальное значение, за исключением случаев, когда за ней следует $, `или \. Первая обратная кавычка, которой не предшествует обратная косая черта, завершает подстановку команды. При использовании формы $(command)все символы в скобках составляют команду; никто не лечится специально.

Подстановки команд могут быть вложенными. Для вложения при использовании формы с обратными кавычками экранируйте внутренние обратные кавычки с помощью обратной косой черты.

Если подстановка находится в двойных кавычках, разбиение на слова и расширение имени файла не выполняются для результатов.

См. этот другой ответ для некоторых хороших примеров использования.

4
27.01.2020, 19:53

Теги

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