我试着用

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在所有文本的开头)

最佳答案

使用awk可以检查第一行是否与所说的内容匹配:

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

如果要打印其文件名,请说:
awk 'NR==1 && /pattern/ {print FILENAME}'

要将其与find结合并检查第一行是否以“asdasd”开头,请使用:
find -type f -exec awk 'NR==1 && /^asdasd/ {print FILENAME}' {} \;

08-27 00:35