Как найти файлы с текстом, начатым с
Я пытался использовать
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).*
регулярное выражение полной строки