列出目录中每个文件的前几行

我正在尝试创build一个非常简单的bash脚本,它将列出特定目录中每个文件的前几行。 该目录应该由参数指定。 我认为应该使用Grep命令,但我真的不知道如何。

我现有的脚本似乎不工作,所以把它放在这里是没有用的。

使用head命令:

 head -3 /path/to/dir/* 

对于使用head*任何答案,除非你想看到如下错误,否则将stderr重定向到/ dev / null:

 head: error reading 'tmp': Is a directory 
 for file in dir/*; do echo "-- $file --" head "$file" echo done 

如果你想要所有文件的前几行以.txt结尾,请尝试

 head *.txt 

要么

 head --lines=3 *.txt 

因为默认情况下,bash的文件名扩展(globbing),所以你可以让你的shell扩展输入,然后让其余的完成:

 head * 

*通配符扩展到工作目录中的所有文件名。 在zsh上,你可以很好地看到这一点,当你按Tab键时,自动完成你的命令行。

你可以用-n参数来改变行数。

如果你想递归地做到这一点:

 find . \! -type d -exec head '{}' +