我正在寻找一种工具,给定一个搜索字符串和一些设置文件,就会在每个文件里搜索所述字符串,如果找到,就打开该文件并转到该行。
也许下面的代码片段可以更好地解释这一点
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}"
但这有很大的缺陷,特别是在搜索代码时。
是否有工具可以完成这项任务?