我正在运行 -> “find . -name '*.txt'”命令并获取文件列表。
我得到下面提到的输出:
./bsd/contrib/amd/ldap-id.txt
./bsd/contrib/expat/tests/benchmark/README.txt
./bsd/contrib/expat/tests/README.txt
./bsd/lib/libc/softfloat/README.txt
等等,
在这些文件中,我如何运行 grep 命令并读取内容并仅过滤那些具有特定关键字的文件?例如其中的“版本”。
最佳答案
xargs
是实现此目的的好方法,并且已经介绍过了。
find
的-exec
选项对此也很有用。它将对从查找返回的所有文件执行命令。
尽可能少地调用 grep
,将多个文件名传递给每个调用:
find . -name '*.txt' -exec grep -H 'foo' {} +
或者,为找到的每个文件恰好调用一次 grep
:
find . -name '*.txt' -exec grep -H 'foo' {} ';'
在任何一种情况下,{}
都像是来自 find
的值的占位符;如果您的 shell 是 zsh,则可能需要对其进行转义,如 '{}'
中所示。
关于linux - 如何从 Linux ls 或 find 命令的文件列表中获取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34301123/