Grep ключевое слово в нескольких файлах и сортировать результаты по дате изменения файла или имени - PullRequest
0 голосов
/ 24 января 2019

Попытка поиска по ключевому слову в нескольких файлах.но результаты поиска не сортируются по дате изменения файла или имени

ag grep tool:

ag "keyword"

grep tool:

grep -r "keyword"

есть ли какой-нибудь способ, которым мы можем управлять сортировкой результатов по дате изменения файла или имени, например следующим?

Ожидаемый результат:

File_0.txt: результаты поиска

File_1.txt: результаты поиска

File_2.txt: результаты поиска

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Просто отсортируйте с помощью ls и передайте результаты в grep или ag, например. сортировать по дате:

grep "keyword" $(ls -1rt)

Для сортировки по имени, agin используйте ls. Замечание, которое стоит упомянуть для MacOS: вам нужно использовать GNU ls (brew install coreutils) с его флагом -U:

ag "keyword" $(gls -U --color) # сортировка по имени в MacOS

0 голосов
/ 25 января 2019

Если вы используете 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
...