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

Shell脚本如何读取文件夹中不含notsoideal的指定命名文件?

筛选符合特定命名规则的Shell文件

方法1:Bash扩展通配符(glob)

如果使用Bash,先开启扩展通配符支持(不确定是否开启时执行以下命令):

shopt -s extglob

使用以下模式匹配目标文件:

ABC?????_?_good_!(*notsoideal*).txt
  • ABC?????:匹配ABC后接5个任意字符(对应你例子里的5位数字)
  • _?_:匹配中间的单个数字段(如_1_、_2_)
  • !(*notsoideal*):排除文件名包含notsoideal的文件
  • .txt:限定文件后缀

若要严格限定数字,可改为:

ABC[0-9][0-9][0-9][0-9][0-9]_[0-9]_good_!(*notsoideal*).txt

方法2:find命令(跨Shell通用)

find支持正则表达式,能精准匹配你的规则:

find . -maxdepth 1 -type f -regextype posix-extended -regex './ABC[0-9]{5}_[0-9]_good_[0-9a-zA-Z]{4}\.txt'

参数说明:

  • -maxdepth 1:仅搜索当前目录,不递归子文件夹
  • -type f:只匹配文件,忽略目录
  • -regextype posix-extended:启用扩展正则语法,支持{n}重复次数匹配
  • -regex后的规则:
    • [0-9]{5}:匹配ABC后5位数字
    • _[0-9]_:匹配中间单个数字的分隔段
    • [0-9a-zA-Z]{4}:匹配_good_后4位字母/数字
    • \.txt:匹配文件后缀(正则中.需转义)

方法3:ls+grep组合过滤

如果仅需查看结果,可通过管道组合命令:

ls ABC*.txt | grep -v 'notsoideal' | grep 'ABC[0-9]\{5\}_[0-9]_good_[0-9a-zA-Z]\{4\}\.txt'
  • grep -v 'notsoideal':过滤掉包含notsoideal的文件名
  • 第二个grep用正则精准匹配符合规则的文件名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:33:13