【问题标题】:Copy last line from multiple files into a single file将多个文件的最后一行复制到一个文件中
【发布时间】:2012-07-12 17:48:09
【问题描述】:

我在一个目录中有许多文件。我想浏览目录,并将每个文件的最后一行放入一个新文件中。 IE,这个新文件应该包含目录中每个文件的最后一行。我尝试使用

tail -n 1 | cat > newfile.txt

但是在每行之间插入了源文件名。我也尝试编写一个 shell 脚本,但它唯一成功的是创建目标文件,然后无限期地运行而无需添加数据。这样做的正确方法是什么?任何帮助深表感谢。

【问题讨论】:

    标签: shell unix tail


    【解决方案1】:

    使用find:

    find . -type f -exec tail -n1 {} >> newfile.txt \;
    

    或者如果你不想遍历子目录:

    find . -depth 1 -type f -exec tail -n1 {} >> newfile.txt \;
    

    【讨论】:

      【解决方案2】:

      至少coreutils tail 有一个不输出标题的-q 标志,所以很简单:

      tail -q -n1 * > OUTFILE
      

      会工作的。

      【讨论】:

        【解决方案3】:

        find 有效,但如果您在 sh/bash/ksh/zsh 中,for 循环也有效。

        for filename in *; do
            tail -n 1 "$filename" >> /path/to/newfile.txt
        done
        

        请注意,如果 newfile.txt 与您在 * 上运行 for 循环位于同一目录中,您可能会得到奇怪的结果。

        【讨论】:

          猜你喜欢
          • 2011-05-19
          • 1970-01-01
          • 1970-01-01
          • 2017-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-09
          相关资源
          最近更新 更多