如何查找名称包含两个字符串中的任何一个的文件?

如何查找名称包含两个字符串中的任何一个的文件?

我想查找名称包含“Mar”或“Jun”的文件,我该怎么做?

答案1

您的第一种方法(find . -type f -name "Mar" -name "Jun")有两个问题:

  • find默认使用逻辑“and”组合不同的规则
  • 您进行了完全姓名匹配

所以唯一可能的匹配是文件被命名为确切地“俊”“Mar”,即无。


相反,请执行以下操作:

  • 您可以在名称搜索中使用通配符(*表示任何可能为空的字符序列),并将其括在引号中以防止被 shell 解释
  • -o用(将两个规则结合起来或者) — 这要求你将替代规则括在括号中,以覆盖通常的运算符优先级,或重复通用-type f规则

例子:

$ ls -1
1st-of-June
January
March
$ find . -type f -name '*Mar*' -o -type f -name '*Jun*'
./1st-of-June
./March

答案2

使用find及其regex选项:

find -regex '.*\(Mar\|Jun\).*'

答案3

ls *{Jun,Mar}*

这将列出所有包含 Jun 或 Mar 的文件名

答案4

此命令将起作用

[max@localhost ~]$ find / -type f -name Mar -o -name Jun
./三月
./六月

更新

那么这就是答案

查找 / -type f -name "*Mar*" -o -type f -name "*Jun*"

相关内容