【问题标题】:Ignore case when trying to match file names using find command in Linux在 Linux 中尝试使用 find 命令匹配文件名时忽略大小写
【发布时间】:2010-09-22 15:25:51
【问题描述】:

现在,我只知道要使用的是:

find / -name string.*

这是区分大小写的,它不会找到名为:

的文件
1string.x
STRing.x
string1.x

如何进行搜索,以便在搜索中将以上所有内容返回到不区分大小写的匹配?

【问题讨论】:

标签: linux search case-insensitive


【解决方案1】:

使用-iname 选项而不是-name

【讨论】:

  • 字符串前后的字符呢? -iname 会返回带有额外字符的名称吗?
  • @micah:如果你告诉它。 find . -iname '*string*'
  • 好的,但-iname 不是 Posix 查找选项。 Posix 确实为 -name 指定了 shell 模式匹配。
  • @DigitalRoss 原发帖人指定了 'linux' 标签,所以我认为假设 GNU findutils 是合理的。
【解决方案2】:

或者你可以使用find / | grep -i string

【讨论】:

  • find 本机执行此操作。仅仅为此创建另一个进程会使其变慢。
  • 没错,但它很容易记住并且与软件工具模式一致。 Find 确实在普通的旧 -name 上进行 shell globbing,这是真的。
【解决方案3】:

如果您想避免使用单引号,这也可以:

find . -iname \*string\*

【讨论】:

  • 找到 . -iname *YOUR_PATTERN* -type f
【解决方案4】:

在 find 中使用 -iname 进行不区分大小写的文件名匹配。

【讨论】:

    【解决方案5】:

    如果你所在的系统没有GNU utils包提供的find命令,你可以单独使用-name标签和POSIX括号表达式为

    find . -name '*[Ss][Tt][Rr]ing*'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 2022-01-08
      • 2021-10-07
      相关资源
      最近更新 更多