You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下find命令特殊字符匹配异常问题求助

关于Ubuntu 20.04中find命令的两个问题解答

问题1:查找以g结尾的隐藏文件失败的原因

  • find ./Dico -name "*g" 生效是因为*是shell通配符,匹配任意长度的任意字符(包括空),能覆盖所有非隐藏的以g结尾的文件。
  • find ./Dico -name ".*g" 无效的核心原因:-name使用的是shell glob规则,不是正则。这里.*匹配以点开头,后面跟任意字符序列,最终要求文件名以g结尾。如果目录里没有符合“以.开头且最后一个字符是g”的文件,自然无结果;若隐藏文件名是.abc.g这类中间带点的,该模式本应匹配,但前提是存在这类文件。
  • find ./Dico -name ".*g$" 完全无效是因为glob规则里没有$作为行尾锚点的语法,$在这里是普通字符,这个命令实际是找文件名以.xxxg$结尾的文件,显然不存在。

问题2:正则特殊字符不生效的解决方法

-name参数只支持shell glob通配符,不支持正则表达式的+、\d、{n}这类语法,要实现复杂匹配得用-regex参数(默认是Emacs风格正则):

  1. 匹配以数字开头后跟恰好5个小写字母的文件(注意-regex匹配的是整个文件路径,不是仅文件名):
    find ./Dico -regex "./Dico/[0-9][a-z]{5}"
    
  2. 如果只想匹配文件名,不想包含路径部分,可以用-regextype指定POSIX扩展正则风格:
    find ./Dico -regextype posix-extended -regex ".*/[0-9][a-z]{5}"
    
  3. 要是坚持用-name,只能用glob的基础写法,把5个小写字母逐个写出来:
    find ./Dico -name "[0-9][a-z][a-z][a-z][a-z][a-z]"
    

内容的提问来源于stack exchange,提问作者Artemis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:30:53