zawodny
zawodny

Reputation: 137

Print names of files with proper head

I want to get the name of files in current directory such that the first line of the file is equal to myWord. I wanted to combine find . -type f command with -exec option with head -1 filename but to no avail. Is there some clever, one-line solution to this problem?

Upvotes: 1

Views: 299

Answers (1)

anubhava
anubhava

Reputation: 785266

You can use find with awk:

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

awk command will search first line of each file for the word myWord then it prints that filename.

Or using gnu sed:

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

Many thanks to @chepner and @123 for extremely helpful comments below this answer.

Upvotes: 2

Related Questions