2017-05-11 11 views
1

파일의 첫 번째 줄이 myWord과 같도록 현재 디렉토리에서 파일 이름을 가져 오려고합니다. 나는 find . -type f 명령을 -exec 옵션과 결합하여 head -1 filename과 결합하고 싶지만 아무 소용이 없습니다. 이 문제에 대한 영리하고 단선이있는 해결책이 있습니까?올바른 머리글이있는 파일 이름을 인쇄하십시오.

+0

bash의 파이프를 사용하여 – bigbounty

답변

2

당신은 awkfind를 사용할 수 있습니다

find . -maxdepth 1 -type f -exec awk '/myWord/{print FILENAME} {nextfile}' {} + 

awk 명령은 단어 myWord 각 파일의 첫 번째 행을 검색합니다 후 그 파일 이름을 인쇄합니다.

또는 gnu sed를 사용하여 : @chepner과이 답변 아래에 매우 도움 의견 (123) @

find . -type f -exec sed '/myWord/F;Q' {} \; 

많은 감사합니다.

+2

현재 디렉토리 만 수행하려면 -maxdepth 1을 추가하십시오. – SaintHax

+0

'/ myWord/{print FILENAME; }; {출구; }'awk는 일치 여부와 관계없이 첫 줄을 제외하고는 아무것도 읽지 않아도됩니다. – chepner

+1

'awk' 프로세스의 수를 최소화하려면'-exec awk '를 사용하십시오. FNR == 1 &&/myWord/{print FILENAME}; {다음 파일; }'{} +' – chepner