Grep 查找目录及其后代中所有文件的第一行中的字符串

Grep 查找目录及其后代中所有文件的第一行中的字符串

如何在当前目录中的所有文件中 grep 查找给定字符串,并递归地仅考虑第一行? (#! 行,如果存在,但前提是 #! 位于第一行)?

答案1

如果您不被迫使用 grep:

find . -type f -exec \
  awk 'FNR==1 && /GIVEN_STRING/ { print FILENAME ": " $0; }; FNR>1 {nextfile}' {} +

这会导致 CPU 负载大大减少,因为一个进程(或极少数)可以完成所有工作。

答案2

尝试这样做:

find . -type f -exec head -1 {} \; | grep "GIVEN_STRING"

相关内容