現在のディレクトリ内のすべてのファイルで特定の文字列を見つけ、最初の行だけを再帰的に考慮するにはどうすればよいですか? (#!行がある場合、しかし#!が行1にある場合のみ)?
答え1
grepを強制的に使用しない場合:
find . -type f -exec \
awk 'FNR==1 && /GIVEN_STRING/ { print FILENAME ": " $0; }; FNR>1 {nextfile}' {} +
これは、1つのプロセス(またはごく少数のプロセス)がすべてのタスクを実行できるため、CPU負荷が大幅に減少する結果をもたらします。
答え2
この試み:
find . -type f -exec head -1 {} \; | grep "GIVEN_STRING"