如何查找以文本开头的文件
How to find files with text started with
我尝试使用
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)
^(asdasd|qwdq|qwdad)
仅正则表达式你想找到的部分
要么
^(asdasd|qwdq|qwdad).*
到正则表达式整行
使用 awk
你可以检查第一行是否匹配任何说法:
awk 'NR==1 && /pattern/' file
如果你想打印它的文件名,那么说:
awk 'NR==1 && /pattern/ {print FILENAME}'
要将其与 find
组合并检查第一行是否以 "asdasd" 开头,请使用:
find -type f -exec awk 'NR==1 && /^asdasd/ {print FILENAME}' {} \;
我尝试使用
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)
^(asdasd|qwdq|qwdad)
仅正则表达式你想找到的部分
要么
^(asdasd|qwdq|qwdad).*
到正则表达式整行
使用 awk
你可以检查第一行是否匹配任何说法:
awk 'NR==1 && /pattern/' file
如果你想打印它的文件名,那么说:
awk 'NR==1 && /pattern/ {print FILENAME}'
要将其与 find
组合并检查第一行是否以 "asdasd" 开头,请使用:
find -type f -exec awk 'NR==1 && /^asdasd/ {print FILENAME}' {} \;