我想搜索路径名包含多个单词(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),如果您想要查找两个以上的单词,那么情况很快就会崩溃。