我试着用
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}' {} \;