【问题标题】:How do i get the 'head' of all files in a specified directory?如何获取指定目录中所有文件的“头”?
【发布时间】:2017-04-19 03:33:11
【问题描述】:

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

numberOfLines=$1
directoryName=$2

head $numberOfLines $directoryName

【问题讨论】:

    标签: bash shell unix command


    【解决方案1】:

    试试这个:

    head $directoryName/* -n $numberOfLines
    

    【讨论】:

      【解决方案2】:

      您以错误的方式调用 head 命令。 将您的代码与manual page 进行比较。

      【讨论】:

        【解决方案3】:

        我会使用find 命令:

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

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

        【讨论】:

          【解决方案4】:

          Head 处理文件(或文件组),而不是目录,因此您需要调整 directoryName 变量,以便告诉 shell 解释器您的意思是“此目录中的每个文件”而不是目录。

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

          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
          

          祝你好运。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-03-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多