打开包含特定文本的所有文件

打开包含特定文本的所有文件

我正在寻找一种终端方法。打开 中/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 的文件。

相关内容