如何编写匹配当前目录下除.和..外所有文件目录的Bash Glob模式?
Bash Glob 匹配当前目录所有文件/目录(排除.和..)
核心方案(无需额外配置)
直接组合两个Glob模式,覆盖所有非./..的文件与目录:
ls -d .[!.]* *
效果验证
假设当前目录内容如下:
. .. .my_dot_directory .my_dot_file my_directory my_file
执行上述命令后,输出结果为:
.my_dot_directory .my_dot_file my_directory my_file
模式说明
.[!.]*:匹配所有以.开头但第二个字符不是.的文件/目录,精准排除.和..*:匹配所有不以.开头的常规文件/目录
简化方案(开启dotglob选项)
如果开启Bash的dotglob选项,*会自动匹配所有以.开头的文件/目录(仍排除.和..),此时命令可简化:
# 开启dotglob选项 shopt -s dotglob ls -d * # 关闭选项可执行:shopt -u dotglob
内容的提问来源于stack exchange,提问作者Rob Bednark
相关产品推荐
相关产品推荐

