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.