Как найти файлы с текстом, начатым с

Я пытался использовать

find ./ -type f -name '*.php' -exec grep -slE '^asdasd' {} \;

а также

find ./ -type f -name '*.php' -exec pcregrep -l '^asdasd' {} \;

Но эти команды находят файлы, где "asdasd" в начале строк, а не весь текст, например:

Содержание файла:

qweqwe

asdasd

czczc

Я хочу найти файлы только с таким содержимым файла:

asdasd

qwdq

qwdad

(asdasd в начале всего текста)

2 ответа

Решение

С awk Вы можете проверить, совпадает ли первая строка с любым высказыванием:

awk 'NR==1 && /pattern/' file

Если вы хотите напечатать его имя файла, то скажите:

awk 'NR==1 && /pattern/ {print FILENAME}'

Чтобы объединить это с find и проверьте, начинается ли первая строка с "asdasd", используйте:

find -type f -exec awk 'NR==1 && /^asdasd/ {print FILENAME}' {} \;

^(asdasd|qwdq|qwdad) регулярное выражение только часть, которую вы хотите найти ИЛИ ^(asdasd|qwdq|qwdad).* регулярное выражение полной строки

Другие вопросы по тегам