如何获取指定目录下所有文件的'head'?

How do i get the 'head' of all files in a specified directory?

我是 UNIX 的初学者。我试图创建一个 bash 脚本,列出指定目录中每个文件的 'head',但我尝试了所有方法,但它似乎不起作用。我该怎么做。下面是我目前在我的脚本中的代码。我打算稍后向脚本中添加更多内容,但首先需要它才能工作。

numberOfLines=
directoryName=

head $numberOfLines $directoryName

试试这个:

head $directoryName/* -n $numberOfLines

您以错误的方式调用了 head 命令。 将您的代码与 manual page.

进行比较

我会使用 find 命令:

find "$directory" -maxdepth 1 -type f -exec head -n "$numberOfLines" {} \;

这确保 head 将只在文件而不是目录上执行。

Head 在一个文件(或一组文件)上工作,而不是一个目录,所以你需要调整你的 directoryName 变量,这样你就可以告诉 shell 解释器你的意思是 "every file in this directory" 和不是目录。

最简单的方法是将“/*”添加到目录名称,将第三行更改为:

head $numberOfLines ${directoryName}/*

示例:

myshell:tmp gdalton$ ./script.sh -2 hello
==> hello/file1 <==
file 1

==> hello/file2 <==
file 2
file 2

请注意,由于 head 命令的语法,您需要像我在示例中所做的那样使用破折号调用第一个参数。您可以使用我为修复您的代码所做的更改作为一个跳跃点,轻松地在您的代码中修复此问题...我强烈建议您查看 head 的手册页,这样您就可以弄清楚如何构建您的 shell命令;它们通常包含这些命令的大量选项。

man head

祝你好运。