【问题标题】:first two results from ls commandls 命令的前两个结果
【发布时间】:2012-05-18 04:57:00
【问题描述】:

我正在使用ls -l -t 来获取按时间排序的目录中的文件列表。

我想将搜索结果限制在列表中的前 2 个文件。
这可能吗?
我用 grep 试过了,但我很挣扎。

【问题讨论】:

    标签: linux search limit ls


    【解决方案1】:

    或者你可以试试这个

    ls -1 -t | head -2
    

    -1 开关跳过标题行。

    【讨论】:

      【解决方案2】:

      为避免处理顶部输出行,您可以反转排序并获取最后两行

      ls -ltr | tail -2
      

      这是相当安全的,但取决于您在找到这两个文件条目后将如何处理它们,您应该阅读Parsing ls,了解使用ls 获取文件和文件信息的问题。

      【讨论】:

        【解决方案3】:

        您可以将其通过管道输入head:

        ls -l -t | head -3
        

        将为您提供前 3 行(2 个文件和总数)。

        这只会给你前两行文件,跳过大小行:

        ls -l -t | tail -n +2 | head -2
        

        tail 删除第一行,然后head 输出接下来的 2 行。

        【讨论】:

        • 当您在该文件夹中有很多文件时,这将花费非常长的时间。有没有办法真的只显示前 3 行而不首先运行整个文件夹?
        • @Sliq - 因为目标是找到两个 最新 文件,所以无论使用什么方法,都必须查看目录中的每个文件。如果您正在编写较低级别的代码,您可以一次性完成,而不是排序,但您仍然需要查看所有文件。
        • 我真的很抱歉我否决了这个。我在另一个窗口上工作,但我的鼠标移动了,我不小心按下了向下按钮。
        • 我怎样才能删除“ls”得到的前两个结果以避免用管道删除它们(| xargs rm -rf)
        【解决方案4】:

        你必须通过头部管道。

        ls -l -t |头 -n 3

        将输出前两个结果。

        【讨论】:

          【解决方案5】:

          您可以使用head 命令仅获取前两行输出:

          ls -l -t | head -2
          

          【讨论】:

          • 这不会给你前 2 个文件,它会提供列表的大小加上列出的第一个文件。
          猜你喜欢
          • 2017-08-28
          • 1970-01-01
          • 1970-01-01
          • 2022-07-06
          • 1970-01-01
          • 2019-03-21
          • 1970-01-01
          • 2020-05-29
          • 1970-01-01
          相关资源
          最近更新 更多