Grep ключевое слово в нескольких файлах и сортировать результаты по дате изменения файла или имени
Попытка найти ключевое слово в нескольких файлах. но результаты поиска не сортируются по дате изменения файла или имени
ag grep tool:
ag "keyword"
инструмент grep:
grep -r "keyword"
Есть ли способ контролировать результаты сортировки по дате изменения файла или имени, как показано ниже?
Ожидаемый результат:
File_0.txt: результаты поиска
File_1.txt: результаты поиска
File_2.txt: результаты поиска
2 ответа
Просто сортируй с ls
и передать результаты в grep
или же ag
Например, сортировать по дате:
grep "keyword" $(ls -1rt)
Для сортировки по имени используйте agin ls
, Замечание, которое стоит упомянуть для MacOS: вам нужно использовать GNU ls
(brew install coreutils) с флагом -U:
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