有没有一个内置的命令或更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最后一个。