![搜索路径名包含多个单词且单词之间没有特定顺序的文件](https://linux22.com/image/134642/%E6%90%9C%E7%B4%A2%E8%B7%AF%E5%BE%84%E5%90%8D%E5%8C%85%E5%90%AB%E5%A4%9A%E4%B8%AA%E5%8D%95%E8%AF%8D%E4%B8%94%E5%8D%95%E8%AF%8D%E4%B9%8B%E9%97%B4%E6%B2%A1%E6%9C%89%E7%89%B9%E5%AE%9A%E9%A1%BA%E5%BA%8F%E7%9A%84%E6%96%87%E4%BB%B6.png)
我想搜索路径名包含多个单词(word1
, word2
)的所有文件,它们之间没有任何特定的顺序。匹配文件的示例有:
word1bar/fooword2/myfile
fooword2/word1bar/myfile
fooword2/bar/word1myfile
什么命令可以解决任务?
我猜这样的命令会起作用:
find . -regex regexpattern
谢谢。
我的解决方案locate
是使用locate和grep管道改进按路径名搜索文件
答案1
使用单一模式(正则表达式或 shell)很难做到这一点,但由于find
可以采用多个条件,我们可以使用
find . -type f -path "*word1*" -path "*word2*" ...
在正则表达式中,您需要指定单词的所有不同排列,例如.*word1.*word2.*|.*word2.*word1.*
(仅限 ERE 或 Perl RE),如果您想要查找两个以上的单词,那么情况很快就会崩溃。