我正在寻找一种终端方法。打开 中/foo/bar
包含字符串 的所有文件foobar
。怎么做?
答案1
你还没说你想如何打开它们:)
一种方法是使用 grep 递归查找文件中的字符串 (-r)。使用 -l 要求 grep 仅输出匹配文件的文件名。这将每行输出一个文件名,使用 xargs 为您的编辑器构建合适的命令行。
grep -r -l foobar /foo/bar/ | xargs vim
这也适用于 gedit;只需将 vim 更改为 gedit。
您也可以使用 find 来实现这一点,但在我看来它更复杂:
find /foo/bar -type -f -exec grep -l foobar {} \; | xargs vim
答案2
foobar
逐个打开包含以下内容的文件vim
:
for f in $(find /foo/bar -type f); do
if [ ! -z "$(grep foobar $f)" ]; then
vim $f
fi
done
答案3
它也适用于
evince *2010*
它将打开您当前正在处理的目录中所有标题包含 2010 的文件。