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

如何用zsh glob查找空目录或仅含.DS_Store文件的目录?

Zsh Glob语法匹配目标目录

1. 精准匹配空目录或仅含.DS_Store的目录

可以结合zsh的glob标记和shell条件判断实现,递归匹配的写法如下:

**/*(/e:'[[ $(ls -A -- $REPLY | grep -vxF .DS_Store | wc -l) -eq 0 ]]':)
  • **/*:递归匹配所有目录(仅匹配当前目录下的目标用*即可)
  • (/e:...):e:标记后嵌入shell代码,用于验证目录内容
  • ls -A -- $REPLY:列出目录下除.和..之外的所有节点
  • grep -vxF .DS_Store:精确过滤掉.DS_Store文件
  • 最终统计剩余节点数为0,说明目录要么是空的,要么仅包含.DS_Store

2. 匹配空目录或仅含任意隐藏文件/节点的目录

有两种简洁实现方式:

方式一:利用数组对比

**/*(/e:'local arr=($REPLY/*(DN)); [[ ${#arr[@]} -eq 0 || ${(M)arr:#$REPLY/.*} == ${arr[@]} ]]':)
  • $REPLY/*(DN):D标记匹配隐藏文件,N标记避免空匹配时报错,获取目录下所有节点
  • ${#arr[@]} -eq 0:判断是否为空目录
  • ${(M)arr:#$REPLY/.*}:筛选出所有隐藏节点,若筛选结果和原数组完全一致,说明目录仅含隐藏节点

方式二:结合空目录标记和条件判断

**/*(/^F|e:'[[ -z $(ls -A -- $REPLY | grep -v "^\\.") ]]':)
  • /^F:你已经熟悉的空目录匹配标记
  • e:后的条件:列出目录节点并过滤掉隐藏文件,若结果为空,说明目录仅含隐藏节点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:19:53