Я ищу инструмент, который дает строку поиска и некоторые заданные файлы, будет искать в каждой из них указанную строку, и если он найдет ее, откройте файл и перейдите к этой строке.
Может быть, это можно объяснить следующим фрагментом
search() {
for file in $(find . -type f); do
contains=$(cat "${file}" | grep -n "$1")
[[ -n "${contains}" ]] && echo "${file}"
done
}
Это упрощенная версия - она будет только печатать имя файла соответствующих файлов и искать каждый файл в текущем каталоге, но это работает. Мы могли бы расширить его и перейти к соответствующей строке, поместив что-то внутри условного
line=$(echo "${contains}" | sed -E 's/^(\d*):.*/\1/')
vim -c "${line}" "${file}"
Но это имеет огромные недостатки, особенно при поиске кода.
Есть ли инструмент для решения этой задачи?