Print names of files with proper head

2020-04-22 04:59发布

问题:

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?

回答1:

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.



标签: bash awk find head