我知道这个ls
选择--group-directories-first
,但这并不是我想要实现的目标。
输出应该是:(按名称 ASC 排序)
- 目录
- 隐藏目录
- 隐藏文件
答案1
使用 GNU ls
(-U
告诉ls
不对文件列表进行排序的选项是 GNU 扩展):
ls -lUd -- *(/) .*(/) .*(^/)
但问题是,如果这些 glob 中的任何一个不匹配,该命令将被取消,所以你可以这样做:
myls() (
setopt cshnullglob
ls -lUd -- *(/) .*(/) .*(^/)
)
这模拟了这样csh
一种行为:只要命令中至少有一个 glob 扩展为某项,则不匹配的 glob 就会扩展为空。
请注意,zsh
glob 永远不会扩展.
和..
,因此这两个永远不会被包含在内。