【问题标题】:How to sort the output of "grep -l" chronologically by newest modification date last?如何按最新修改日期按时间顺序对“grep -l”的输出进行排序?
【发布时间】:2012-07-09 09:41:16
【问题描述】:

我在 grep 中使用 -l 标志来打印匹配的文件名。

然后我想按升序列出结果(文件),即最新的最后一个。

显然

grep -l <pattern> *.txt | ls -rt

不是我需要的,因为 ls -lrt 仅输出 all 文件。

【问题讨论】:

    标签: linux unix grep


    【解决方案1】:

    试试:

    ls -rt *.txt | xargs grep -l <pattern>
    

    我们首先使用ls 列出*.txt 文件并按修改时间(最新最后)对它们进行排序,然后对每个条目运行它们通过grep,因此我们只打印出包含该模式的文件。

    【讨论】:

    • 确保你cd进入目录,因为grep会在当前工作目录中寻找文件名。
    【解决方案2】:

    这是另一种方式

    grep -l <pattern> *.txt | xargs ls -ltr --time-style="+%Y%m%d_%H%M"
    

    例如

    $ grep -l argparse * | xargs ls -ltr --time-style="+%Y%m%d_%H%M"
    -rwxr-xr-x 1 raju 197121   979 20171030_2323 list_dep.py
    -rwxr-xr-x 1 raju 197121 14329 20180129_2216 grep_installed.py
    -rwxr-xr-x 1 raju 197121  7517 20180129_2216 popsort.py
    

    仅列出没有时间戳等的文件,

    grep -l <pattern> * | xargs ls -1tr
    

    例如

    $ grep -l argparse * | xargs ls -1tr
    list_dep.py
    grep_installed.py
    popsort.py
    

    【讨论】:

      【解决方案3】:

      我知道这是一个老问题,但我想为正在寻找相同问题的人添加我的建议..

      for i in $(ls -rt *.txt); do grep &lt;pattern&gt; $i; done

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-13
        • 1970-01-01
        相关资源
        最近更新 更多