3

Как я могу найти строку в файлах в каталоге, используя имена файлов, начинающиеся с буквы а. Я также хочу получить количество вхождений этой строки из запускаемой мной программы grep .

Я пробовал это

cat * | grep -c строка, но она ищет все файлы. Я просто хочу искать файлы, которые начинаются с буквы

5 ответов5

8
grep -c string a*
4

grep -c string a*

3

альтернативный метод дает вам силу и гибкость команды ' find ':

находить . имя "а *" | xargs grep -c строка

1

grep -c строка a *

0

Как уже говорили другие, ваше основное решение:

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».

Это будет медленно; если вам действительно нужна более быстрая версия, вы, вероятно, можете взломать ее на языке сценариев.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .