我正在尝试创建一个非常简单的bash脚本,它将列出特定目录中每个文件的前几行。该目录应由参数指定。 我认为应该使用Grep命令,但我真的不知道如何。
我现有的脚本似乎根本不起作用,所以把它放在这里是没用的。
答案 0 :(得分:8)
使用head命令:
head -3 /path/to/dir/*
答案 1 :(得分:3)
对于使用head
和*
的任何答案,将stderr重定向到/ dev / null除非您希望看到如下错误:
head: error reading ‘tmp’: Is a directory
答案 2 :(得分:0)
for file in dir/*; do
echo "-- $file --"
head "$file"
echo
done
答案 3 :(得分:0)
因为bash默认情况下会进行文件名扩展(globbing),所以你可以让你的shell扩展输入,让其他人做其余的事情:
head *
*通配符扩展为工作目录中的所有文件名。在zsh上,当你按Tab键自动填充命令行时,你可以很好地看到它。
您可以使用-n参数将行数更改为head。
如果您想以递归方式执行此操作:
find . \! -type d -exec head '{}' +
答案 4 :(得分:0)
如果您想要以.txt
结尾的所有文件的前几行,请尝试
head *.txt
或
head --lines=3 *.txt