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

Pet*_*gan 5 command-line find filename

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

    find . -name "hello 165 920" > /search/results/here/search20170224.txt
Run Code Online (Sandbox Code Playgroud)

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

示例:helloxx165xx920、hello_165-920、hello165920

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

我不知道如何使用 find 命令进行这种搜索,我需要一个接一个地运行大约 500 个这样的搜索;所以需要一个 CLI 方法,所以我最终不必手动设置每个搜索,并且由于搜索的绝对大小和深度而最终每 5 分钟使 Nemo 崩溃一次。

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

ter*_*don 11

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

find . -name "*hello*" -and -name '*165*' -and -name "*920*" > search20170224.txt
Run Code Online (Sandbox Code Playgroud)

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

hello 165 920
goodbye 321 123
Run Code Online (Sandbox Code Playgroud)

然后,您可以遍历文件并构建find查询:

while read a b c; do
    find . -name "*$a*" -and -name "*$b*" -and -name "*$c*" > search."$a"_"$b"_"$c".txt
done
Run Code Online (Sandbox Code Playgroud)