【发布时间】:2021-09-03 07:54:13
【问题描述】:
我需要用两个关键字搜索整个文件夹,比如说 ball 和 bat。 unix 文件夹中有 10k 个文件。所以我需要使用命令来搜索该文件夹中具有这两个关键字的整个文件。搜索必须是文件明智的。以下命令用于搜索单个文件,但我需要使用文件方式搜索整个文件夹。
grep [args] -e ball -e bat file1.xml
上面的命令告诉我这两个关键字是否存在于该文件中。但我需要的是文件夹中包含这两个关键字的文件。
【问题讨论】:
-
您是否正在寻找 grep 选项 "-l, --files-with-matches -- 禁止正常输出;而不是打印通常会从中打印输出的每个输入文件的名称。" ? (结合
*作为文件名或-r .用于递归搜索目录及以下) -
@dratenik - 是的,我需要该文件夹中的文件名。考虑如果假设该文件夹有 1000 个文件,而上述两个关键字仅存在于 45 个文件中,那么我需要输出 45 个文件名,这有意义吗?
-
find . -type f -exec grep -e ball -e bat {} \; -
@WilliamPursell - 第二个命令打印输出中的所有文件,不管它有没有。但是考虑下面的命令它给了我球的输出,在这个相同的命令中我可以添加 /,|,& 或任何其他方式来添加 bat 吗??
-
找到 ./ -type f -print0 | xargs -0 grep -i "球" -ls