使用find
命令时,为什么在匹配其他所有内容时,以下内容将成功忽略隐藏目录(以句点开头):
find . -not \( -type d -name ".?*" -prune \)
但这根本不匹配:
find . -not \( -type d -name ".*" -prune \)
唯一的区别是问号。后一个命令不应该同样检测和排除以句点开头的目录吗?
答案 0 :(得分:8)
后一个命令修剪所有东西,因为它修剪.
- 尝试这些来看看差异:
$ ls -lad .*
.
..
.dotdir
$ ls -lad .?*
..
.dotdir
您看到在第二个中,.
未包括在内,因为它只有一个字符长。 glob“.?*
”仅包含至少两个字符长的文件名(点,加上任何单个字符,非可选,加上任何零个或多个字符的序列)。
顺便说一下,find
不是Bash命令。
答案 1 :(得分:1)
后一个命令修剪.
本身 - 您正在运行find
的目录 - 这就是它不会产生任何结果的原因。