0

试图在多个文件中搜索关键字。但搜索结果不按文件修改日期或名称排序

ag grep 工具:

ag "keyword"

grep 工具:

grep -r "keyword"

有什么方法可以控制按文件修改日期或名称排序的结果,如下所示?

预期输出:

File_0.txt:搜索结果

File_1.txt:搜索结果

File_2.txt:搜索结果

4

2 回答 2

2

只需排序ls并将结果传递给grepor ag,例如按日期排序:

grep "keyword" $(ls -1rt)

要按名称排序,请再次使用ls. MacOS 值得一提的警告:您需要使用ls带有 -U 标志的 GNU(brew install coreutils):

ag "keyword" $(gls -U --color) #在 MacOS 上按名称排序

于 2019-01-31T04:24:26.553 回答
0

如果您使用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
于 2019-01-24T21:14:45.827 回答