Чтобы установить минимальные требования к Ubuntu 16.04, выполните следующие действия:
sudo apt-get install libqtwebkit4 libqt4-svg
Постановка -exec grep [...] перед -printf и отправка stdout из grep в /dev/null (требуется sh -c) хорошо работает:
find ./dir -type f -newermt 2017-04-01 ! -newermt 2018-06-30 \
-exec sh -c 'grep -E -l "pattern" "{}" 1>/dev/null' \; \
-printf "%TY/%Tm/%Td %TH:%TM:%.2TS %p\0" | \
sort -z -n | tr '\0' '\n'
Благодаря вашему вопросу я узнал что-то новое. Я даже не знал, что можно отфильтровать результаты find.
Еще один вариант - использовать некоторые трубопроводы и xargs. Первые тесты производительности показывают, что это даже немного быстрее, хотя мне интересно, почему:
find ./dir -type f -newermt 2017-04-01 ! -newermt 2018-06-30 -print0 | \
xargs -0 -i -P6 grep -E -l "pattern" "{}" | \
xargs -i find "{}" -printf "%TY/%Tm/%Td %TH:%TM:%.2TS %p\0" | \
sort -z -n | tr '\0' '\n'
(Обратите внимание на -P6 -> Выполнение команды grep параллельно.)
Постановка -exec grep [...] перед -printf и отправка stdout из grep в /dev/null (требуется sh -c) хорошо работает:
find ./dir -type f -newermt 2017-04-01 ! -newermt 2018-06-30 \
-exec sh -c 'grep -E -l "pattern" "{}" 1>/dev/null' \; \
-printf "%TY/%Tm/%Td %TH:%TM:%.2TS %p\0" | \
sort -z -n | tr '\0' '\n'
Благодаря вашему вопросу я узнал что-то новое. Я даже не знал, что можно отфильтровать результаты find.
Еще один вариант - использовать некоторые трубопроводы и xargs. Первые тесты производительности показывают, что это даже немного быстрее, хотя мне интересно, почему:
find ./dir -type f -newermt 2017-04-01 ! -newermt 2018-06-30 -print0 | \
xargs -0 -i -P6 grep -E -l "pattern" "{}" | \
xargs -i find "{}" -printf "%TY/%Tm/%Td %TH:%TM:%.2TS %p\0" | \
sort -z -n | tr '\0' '\n'
(Обратите внимание на -P6 -> Выполнение команды grep параллельно.)
Постановка -exec grep [...] перед -printf и отправка stdout из grep в /dev/null (требуется sh -c) хорошо работает:
find ./dir -type f -newermt 2017-04-01 ! -newermt 2018-06-30 \
-exec sh -c 'grep -E -l "pattern" "{}" 1>/dev/null' \; \
-printf "%TY/%Tm/%Td %TH:%TM:%.2TS %p\0" | \
sort -z -n | tr '\0' '\n'
Благодаря вашему вопросу я узнал что-то новое. Я даже не знал, что можно отфильтровать результаты find.
Еще один вариант - использовать некоторые трубопроводы и xargs. Первые тесты производительности показывают, что это даже немного быстрее, хотя мне интересно, почему:
find ./dir -type f -newermt 2017-04-01 ! -newermt 2018-06-30 -print0 | \
xargs -0 -i -P6 grep -E -l "pattern" "{}" | \
xargs -i find "{}" -printf "%TY/%Tm/%Td %TH:%TM:%.2TS %p\0" | \
sort -z -n | tr '\0' '\n'
(Обратите внимание на -P6 -> Выполнение команды grep параллельно.)