如何按日期顺序grep文件

Anu*_*ush 3 bash

我可以将Python文件列在最近更新到最近最新更新的目录中

ls -lt *.py
Run Code Online (Sandbox Code Playgroud)

但是我怎么能按顺序grep这些文件呢?

我理解一个人永远不应该试图解析输出,ls因为这是一件非常危险的事情.

anu*_*ava 8

您可以使用此管道通过gnu实用程序实现此目的:

find . -maxdepth 1 -name '*.py' -printf '%T@:%p\0' |
sort -z -t : -rnk1 |
cut -z -d : -f2- |
xargs -0 grep 'pattern'
Run Code Online (Sandbox Code Playgroud)

这将处理具有特殊字符的文件名,例如space,newline,glob等.

  1. find查找*.py当前目录中的所有文件并打印修改时间(纪元值)+ :+文件名+ NUL字节
  2. sort 命令对作为时间戳的第一列执行反向数字排序
  3. cut 命令从输出中删除第1列(时间戳)
  4. xargs -0 grep命令pattern在每个文件中搜索