试图在多个文件中搜索关键字。但搜索结果不按文件修改日期或名称排序
ag grep 工具:
ag "keyword"
grep 工具:
grep -r "keyword"
有什么方法可以控制按文件修改日期或名称排序的结果,如下所示?
预期输出:
File_0.txt:搜索结果
File_1.txt:搜索结果
File_2.txt:搜索结果
只需排序ls
并将结果传递给grep
or ag
,例如按日期排序:
grep "keyword" $(ls -1rt)
要按名称排序,请再次使用ls
. MacOS 值得一提的警告:您需要使用ls
带有 -U 标志的 GNU(brew install coreutils):
ag "keyword" $(gls -U --color)
#在 MacOS 上按名称排序
如果您使用bash
,以下是grep
按修改日期排序的结果选项:
while IFS= read -r -d '' file; do
grep -H "keyword" "$file"
done < <(find * -type f -printf "%T@\t%p\0" | sort -rz | cut -z -f2-)
find
表达式分解:
find * -type f -printf "%T@\t%p\0" | # print last-mod date and filename, NUL-terminated
sort -rz | # sort in reverse order
cut -z -f2- # cut out time field