我使用的是 Mac OS X 10.5,有一个名为
_Mail.grxml
处理方式很有趣。
ls -l
将显示文件,但是
ls -l *
不会。只有这一个文件;注意
ls -l | wc -l
给出 43(目录中的文件数),但是
ls -l * | wc -l
得出 42。
所以问题是 -- 是否存在 OSX 无法很好地处理的文件名?或者命令行上的 * 的语义与我预期的不同?
(请注意,这不是唯一一个名称以下划线开头的文件;其他文件都可以通过 * 顺利找到)。
答案1
你没有说你正在使用什么 shell,但是如果它是 Bash(或类似的),你可能将环境变量GLOBIGNORE
设置为在执行路径名扩展时排除某些模式,例如在 中ls -l *
。
格洛比格诺尔 定义文件名集的模式列表,以冒号分隔 将被路径名扩展忽略。如果文件名与 路径名扩展模式也匹配 GLOBIGNORE,将其从匹配列表中删除。
$ touch _Mail.grxml
$ ls -l
-rw-r--r-- 1 user user 0 2009-11-13 14:57 _Mail.grxml
$ ls -l *
-rw-r--r-- 1 user user 0 2009-11-13 14:57 _Mail.grxml
$ GLOBIGNORE=*.grxml
$ ls -l
-rw-r--r-- 1 user user 0 2009-11-13 14:57 _Mail.grxml
$ ls -l *
ls: cannot access _*: No such file or directory
(这是测试目录中唯一的文件。)
答案2
一个想法 - 它是以 ._ (点下划线,而不仅仅是下划线)开头的吗?