查找包含 3 条文本的文件/文件夹

查找包含 3 条文本的文件/文件夹

我正在运行 Ubuntu 14.04,目前正在尝试使用以下命令搜索包含“hello”、“165”和“920”(在其名称中 - 而不是在文件中)的文件和文件夹:

    find . -name "hello 165 920" > /search/results/here/search20170224.txt

当我在 Nemo 中搜索这样的字符串(“hello 165 920”)时,给出的结果正是我想要的。如果文件或文件夹包含单词“hello 165 920”(以任何给定的顺序或在其他文本中),则会显示结果。

示例:helloxx165xx920,hello_165-920,hello165920

所以我想要做的事绝对是可能的,但是通过 CLI 中的 find 命令,我只能获得完美匹配的结果。

我无法弄清楚如何使用 find 命令进行此类搜索,而且我需要接连运行大约 500 次此类搜索;因此需要采用 CLI 方法,这样我就不必手动设置每个搜索,并且由于搜索的规模和深度,每 5 分钟就会导致 Nemo 崩溃一次。

任何人提供的任何帮助都将不胜感激=]

答案1

您需要使用通配符(*foo*而不是foo),多个-name测试,并将它们与结合起来-and

find . -name "*hello*" -and -name '*165*' -and -name "*920*" > search20170224.txt

如果您要搜索许多不同的字符串,则可以将它们保存在一个文件中,其中每个字符串都是一个(以空格分隔的)列:

hello 165 920
goodbye 321 123

然后您可以迭代该文件并构建find查询:

while read a b c; do
    find . -name "*$a*" -and -name "*$b*" -and -name "*$c*" > search."$a"_"$b"_"$c".txt
done

相关内容