Для вопроса 1 вы можете сделать следующее:
найти. -name "* .txt" | xargs grep -i "abc" | wc -l
Подсчитывает общее количество совпадений для abc во всех текстовых файлах.
И для вопроса 2 я придумал:
найти. -name "* .txt" -exec grep -i "abc" {} + | вырезать -d: -f1 | сортировать | uniq | wc -l
Это получает только уникальные имена файлов из списка совпадений и считает их (сортировка, вероятно, не нужна).
Как указано miracle173, grep
поставляется с флагом «одно совпадение на файл», поэтому команду можно сократить до просто:
find. -name "* .txt" -exec grep -il "abc" {} + | туалет -l
В качестве (отформатированного )продолжения моего комментария, это фактический -отказ от сценария автоожидания:
#!/usr/bin/expect
set prompt "\$\[00m $"
spawn bash
expect -re $prompt
send -- "ls\r"
expect -re $prompt
send -- "ls -l\r"
send -- "exit\r"
expect eof
Вот что я имею в виду под удалением 95%.
Чтобы ответить на ваш вопрос, если вы хотите взаимодействовать с созданной оболочкой, измените
expect eof
с по
interact
Это останавливает взаимодействие по сценарию и передает команду пользователю.