【发布时间】:2012-07-09 09:41:16
【问题描述】:
我在 grep 中使用 -l 标志来打印匹配的文件名。
然后我想按升序列出结果(文件),即最新的最后一个。
显然
grep -l <pattern> *.txt | ls -rt
不是我需要的,因为 ls -lrt 仅输出 all 文件。
【问题讨论】:
我在 grep 中使用 -l 标志来打印匹配的文件名。
然后我想按升序列出结果(文件),即最新的最后一个。
显然
grep -l <pattern> *.txt | ls -rt
不是我需要的,因为 ls -lrt 仅输出 all 文件。
【问题讨论】:
试试:
ls -rt *.txt | xargs grep -l <pattern>
我们首先使用ls 列出*.txt 文件并按修改时间(最新最后)对它们进行排序,然后对每个条目运行它们通过grep,因此我们只打印出包含该模式的文件。
【讨论】:
cd进入目录,因为grep会在当前工作目录中寻找文件名。
这是另一种方式
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
【讨论】:
我知道这是一个老问题,但我想为正在寻找相同问题的人添加我的建议..
for i in $(ls -rt *.txt); do grep <pattern> $i; done
【讨论】: