В качестве альтернативы рекурсивным grep
иxargs
:
$ find /dir -type f -name "*.txt" -exec grep -q '^[[:space:]]*=' {} ';' -print
Это будет искать в/dir
(и ниже )все обычные файлы, имена которых соответствуют заданному шаблону. Для каждого такого файла, если grep -q '^[[:space:]]*='
завершается с нулевым статусом выхода (шаблон совпал где-то в файле ), то выводится его имя.
Или, если вы просто хотите увидеть сами строки:
$ find /dir -type f -name "*.txt" -exec grep '^[[:space:]]*=' {} '+'
+
в конце будет передавать как можно больше имен файлов при каждом вызове grep
, тогда как использование ;
, как в моем первом примере, будет передавать только один файл за раз.
Между экстенсионалом и шебангом нет никакой связи. Расширения предназначены только для пользователей.
Также для файлов bash
вы можете использовать #!/bin/bash
. И /bin/sh
обычно является символической ссылкой на /bin/bash
или /bin/dash
, зависит от системы.