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

Linux 列出目录中每个文件的前几行,linux,bash,shell,Linux,Bash,Shell,我试图创建一个非常简单的bash脚本,它将列出特定目录中每个文件的前几行。目录应该由参数指定。 我认为应该使用Grep命令,但我真的不知道如何使用 我现有的脚本似乎根本不起作用,因此将其放在这里是没有用的。使用head命令: for file in dir/*; do echo "-- $file --" head "$file" echo done head -3 /path/to/dir/* 因为bash默认进行文件名扩展(globbing),所以您可以让shel

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

我现有的脚本似乎根本不起作用,因此将其放在这里是没有用的。

使用head命令:

for file in dir/*; do
    echo "-- $file --"
    head "$file"
    echo
done
head -3 /path/to/dir/*

因为bash默认进行文件名扩展(globbing),所以您可以让shell扩展输入,让head完成其余工作:

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

可以使用-n参数将行数更改为head

如果要递归执行此操作,请执行以下操作:

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

如果希望所有文件的前几行以
.txt
结尾,请尝试

head *.txt


对于使用
head
*
的任何答案,请将stderr重定向到/dev/null,除非您希望看到以下错误:

head: error reading ‘tmp’: Is a directory
head: error reading ‘tmp’: Is a directory