linux - 如何从 Linux ls 或 find 命令的文件列表中获取内容

标签 linux grep ls

我正在运行 -> “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/

相关文章:

c++ - Linux 终端对比 eclipse

linux - 退出 shell 脚本时如何杀死所有子进程?

python-3.x - 如何选择和使用 python3 dbus 库来替换 dbus-send 调用

macos - 为 Mac OS 10.7 更新 grep

linux - 仅列出文件; iconv 和目录?

c++ - 信号处理程序和库工作线程

regex - 为什么 egrep 在 AIX 上不能正常工作?

linux - 在 Makefile 中显示符合特定条件的行

linux - 合并多个 ls 结果 Linux

在 C 中创建 ls 命令