列出给定位置的直接子目录的简单方法是什么?

有没有一个内置的命令或更less的冗长的方式来实现这一目标?

find /var/foo -maxdepth 1 -mindepth 1 -type d 

或者如果我经常做这种事情,我应该只做一个小小的shell脚本或函数?

 ls -d */ 

“-d”表示不钻研目录,“* /”只匹配目录。

最短的命令似乎是

 ls -d /var/foo/{*,.[^.]*,..[^.]*}/ 

我相信会非recursion地列出/var/foo所有子目录,不pipe这个目录多么愚蠢地命名,或者是否涉及非ASCII字符。

 user@comp:~$ ls -1d /var/foo/{*,.[^.]*,..[^.]*}/ /var/foo/ . . . . . / /var/foo/-d/ /var/foo/. . . . . ./ /var/foo/. d/ /var/foo/.-d/ /var/foo/..d/ /var/foo/.d/ /var/foo/.字_Ж/ /var/foo/d/ /var/foo/dir1/ /var/foo/dir2/ /var/foo/字/ 

但是, find /var/foo -maxdepth 1 -mindepth 1 -type d更容易记住和键入。

以下是我原来的自答。

如果一个人不关心以点开头的文件,那么就是mibus的答案

 ls -d /var/foo/*/ 

将是短暂和有效的。 但是,如果有人想隐藏的文件被包括在内,那么就需要坚持下去

 find /var/foo -maxdepth 1 -mindepth 1 -type d 

或尝试

 ls -FA /var/foo | grep / 

-F放置/和目录名称的结尾(以及其他types文件的其他字符)。 -A导致以点开始的文件被包括在内,除了“。”之外。 和“..”。 这就是为什么-a不被使用。 grep不会得到任何误报,因为文件名中不允许有'/'(至less对于POSIX文件系统)。

关于性能,在我的Ubuntu Jaunty安装中,只有32k个文件和目录在/ var / foo中,find是最快的,后面是ls -d,而ls -FA和grep最后一个。