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

Zsh遍历脚本修改咨询:适配目录与指定文件需求

Zsh脚本问题解答

1. 核心代码(./**/*(.NDoN))的工作原理

整体逻辑

./**/*(.NDoN)是Zsh的递归文件匹配表达式,作用是筛选出当前目录及所有子目录下符合条件的普通文件,为后续复制检测I/O错误提供目标文件列表。

各部分拆解

  • ./**/*:Zsh的递归通配符模式
    • **:匹配当前目录及所有嵌套子目录的层级
    • *:匹配任意文件名/目录名
  • (.NDoN):Zsh的Glob修饰符,用于过滤和调整匹配规则,每个字符的含义:
    • .:仅保留普通文件(排除目录、符号链接、设备文件等特殊类型文件)
    • N:启用局部nullglob模式——如果没有匹配到任何文件,表达式返回空列表,而非原样输出./**/*,避免后续脚本处理空匹配时报错
    • D:启用局部dotglob模式——匹配以.开头的隐藏文件/目录(结合前面的.修饰符,最终会包含隐藏的普通文件)
    • oN:指定排序规则为自然排序(比如file10会排在file2之后,而默认字典序会把file10放在file2前面)

2. 需求修改方案

需求1:仅非递归遍历当前目录下的所有目录

调整Glob模式和修饰符,去掉递归通配符并指定匹配目录:

(./*(/ND))
  • 拆解:
    • ./*:仅匹配当前目录下的直接条目(非递归,不深入子目录)
    • /:仅保留目录(替换原有的.普通文件修饰符)
    • N+D:保留空匹配处理和隐藏目录匹配的规则

需求2:仅非递归遍历当前目录下的所有文件(深度为1)

去掉递归通配符**,仅匹配当前目录的普通文件:

(./*(.ND))
  • 拆解:
    • ./*:仅匹配当前目录下的直接条目(深度为1,不递归子目录)
    • .:仅保留普通文件
    • N+D:保留空匹配处理和隐藏文件匹配的规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:05:06