2013-12-09 30 views
5

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

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

+1

尝试:'head -n 5 *' – pfnuesel

回答

0
for file in dir/*; do 
    echo "-- $file --" 
    head "$file" 
    echo 
done 
7

使用head命令:

head -3 /path/to/dir/* 
0

因为bash所做的文件名扩展(通配符)在默认情况下,你可以让你的shell扩展输入,让头部做休息:

head * 

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

您可以使用-n参数改变行数。

如果你想递归地做到这一点:如果你想在.txt结尾的文件的前几行

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

,尝试

head *.txt 

head --lines=3 *.txt 
3

对于任何使用head*的答案,重定向stderr到/ dev/null,除非你想看到像这样的错误:

head: error reading ‘tmp’: Is a directory