通配符“*”在macOS系统的终端中如何使用才能匹配隐藏文件?
美国、香港服务器
通配符“*”在macOS系统的终端中如何使用才能匹配隐藏文件?
09-17 来源:
在 macOS 终端中,隐藏文件以点(.)开头(如 .bash_profile、.git 目录)。默认情况下,通配符 * 不会匹配这类文件,需要通过特定语法显式包含点前缀才能匹配隐藏文件,具体方法如下:
一、基础方法:直接包含点(.)前缀
要匹配隐藏文件,需在通配符模式中明确包含 .(点),因为 * 本身默认会忽略以 . 开头的文件。
1. 匹配所有隐藏文件 / 目录
bash
# 列出当前目录下所有隐藏文件和目录(以 . 开头的所有项)
ls .*
. 表示 “以点开头”,* 匹配后续任意字符,组合起来即匹配所有隐藏项(如 .bashrc、.ssh 目录)。
2. 匹配特定类型的隐藏文件
bash
# 匹配当前目录下所有隐藏的 .conf 配置文件(如 .nginx.conf、.gitconfig)
ls .*.conf
# 匹配当前目录下所有隐藏的文本文件(以 .txt 结尾的隐藏文件,如 .notes.txt)
ls .*.txt
. 确保匹配隐藏文件,*.conf 限定文件类型,组合后精准匹配 “隐藏的 .conf 文件”。
3. 匹配名称中包含特定字符的隐藏文件
bash
# 匹配所有名称中包含 "env" 的隐藏文件(如 .env、.bash_env)
ls .*env*
. 表示隐藏文件,*env* 匹配名称中包含 env 的任意字符序列。
二、进阶:匹配特定目录下的隐藏文件
结合路径使用,可匹配指定目录中的隐藏文件:
bash
# 匹配用户主目录(~)下所有隐藏文件和目录
ls ~/.*
# 匹配 /etc 目录下所有隐藏的 .d 结尾的目录(如 .bash_completion.d)
ls /etc/.*.d
三、递归匹配子目录中的隐藏文件
若需匹配子目录中的隐藏文件,可结合 **(递归通配符)或 find 命令:
1. 用 ** 递归匹配(zsh 默认支持,bash 需开启 globstar)
bash
# 递归匹配当前目录及所有子目录中的隐藏 .txt 文件
ls **/.*.txt
**/ 表示 “当前目录及所有子目录”,.*.txt 匹配隐藏的 .txt 文件。
2. 用 find 命令递归匹配(更通用)
bash
# 递归查找 ~/Documents 及其子目录中所有隐藏文件
find ~/Documents -name ".*"
# 递归查找 /var 目录中所有隐藏的日志文件(以 .log 结尾)
find /var -name ".*.log"
find 命令天生支持递归,-name ".*" 明确匹配隐藏文件。
四、注意事项
避免匹配 . 和 ..:
. 代表当前目录,.. 代表父目录,使用 .* 时会同时匹配这两个特殊目录。若需排除,可结合 grep -v:
bash
ls .* | grep -vE "^\.$|^\.\.$" # 排除 . 和 ..
区分大小写:
隐藏文件的匹配同样遵循终端的大小写规则(默认区分,可通过 nocaseglob 关闭)。例如 .File.txt 和 .file.txt 默认会被 .*.txt 同时匹配,但 ls .*File.txt 只会匹配前者。
谨慎操作隐藏文件:
隐藏文件多为系统配置(如 .bashrc)或程序数据(如 .git),删除 / 修改前需确认用途,避免影响系统或程序运行。
总结
匹配隐藏文件的核心是在通配符模式中显式包含 . 前缀,常用模式:
所有隐藏文件:.*
特定类型隐藏文件:.*.扩展名(如 .*.conf)
递归匹配:**/.*(zsh)或 find 路径 -name ".*"
通过这种方式,* 通配符就能精准匹配 macOS 终端中的隐藏文件。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快