如何按最新修改日期按时间顺序对"grep -l"的输出进行排序?

Pyd*_*man 25 unix linux grep

我正在使用-l标志和grep来打印匹配的文件名.

我想按升序列出结果(文件),即最新的.

明显

grep -l <pattern> *.txt | ls -rt
Run Code Online (Sandbox Code Playgroud)

不是我需要的,因为ls -lrt只输出所有文件.

Sha*_*hin 47

尝试:

ls -rt *.txt | xargs grep -l <pattern>
Run Code Online (Sandbox Code Playgroud)

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

  • 确保“cd”进入该目录,因为“grep”将在**当前工作目录**中查找文件名。 (2认同)

Kam*_*chi 7

这是另一种方法

grep -l <pattern> *.txt | xargs ls -ltr --time-style="+%Y%m%d_%H%M"
Run Code Online (Sandbox Code Playgroud)

例如

$ 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
Run Code Online (Sandbox Code Playgroud)

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

grep -l <pattern> * | xargs ls -1tr
Run Code Online (Sandbox Code Playgroud)

例如

$ grep -l argparse * | xargs ls -1tr
list_dep.py
grep_installed.py
popsort.py
Run Code Online (Sandbox Code Playgroud)


NIK*_*NIK 5

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

for i in $(ls -rt *.txt); do grep <pattern> $i; done