搜索包含字符串的文件并列出按修改日期排序的名称

搜索包含字符串的文件并列出按修改日期排序的名称

我使用此命令查找目录中包含特定字符串的所有文件:

grep -lir "string" path_to directory

例子

grep -lir "users" /var/www/mysite

此命令显示指定目录中包含字符串“users”的所有文件。但是,我想按修改日期降序对它们进行排序;最新到最旧。

有什么帮助吗?

答案1

首先我们使用该Z选项,然后在另一端带有 -0 选项的 xargs 将捕获文件名并统计它们,排序并删除计时信息以显示排序的最新第一个列表。

 grep -Zlir users /var/www/mysite | xargs -0 -r stat --format='%Y+%n' | sort -t+ -k 1,1nr | cut -d+ -f2-

答案2

zsh

print -rl ./**/*(.De_'grep -qi "string" $REPLY'_om)

这使用全局限定符仅选择.包含string(即表达式e_'grep -qi "string" $REPLY'_返回的全局结果true)的常规文件 ( ),然后通过om对最终结果进行排序mtime(最新的在前)。D如果您不想搜索隐藏文件,请删除。

相关内容