Grep은 디렉토리와 그 하위 항목에 있는 모든 파일의 첫 번째 줄에서 문자열을 찾습니다.

Grep은 디렉토리와 그 하위 항목에 있는 모든 파일의 첫 번째 줄에서 문자열을 찾습니다.

현재 디렉터리의 모든 파일에서 특정 문자열을 찾고 첫 번째 줄만 재귀적으로 고려하려면 어떻게 해야 합니까? (#! 라인이 있는 경우, 그러나 #!가 라인 1에 있는 경우에만)?

답변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"

관련 정보