我使用此命令查找目录中包含特定字符串的所有文件:
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
如果您不想搜索隐藏文件,请删除。