Как уже говорили другие, ваше основное решение:
grep -c string a*
Вы сказали, что хотите отсортировать файлы и перечислить дополнительную информацию.
Вы не можете получить все это с помощью grep, но пусть ls сделает это, если вы не беспокоитесь об эффективности, а в файлах нет пробелов или других странных символов:
ls -tr `grep -l string a*` | while read file; do
grep -c string "$file" | tr '\n' '\t'
ls -l "$file"
done
Первый grep в backticks ищет подходящие файлы, перечисляя только имена. Первый ls затем сортирует их по времени изменения в обратном порядке. Затем мы просматриваем каждый файл во второй раз, чтобы посчитать вхождения, и добавляем счет к стандартному списку «ls -l».
Это будет медленно; если вам действительно нужна более быстрая версия, вы, вероятно, можете взломать ее на языке сценариев.