仅列出UNIX中的目录
我只想列出指定path中的目录( ls
没有这个选项)。 另外,这可以用一个单行命令来完成吗?
试试这个ls -d */
来列出当前目录中的目录
尝试这个:
find . -maxdepth 1 -type d
下列
find * -maxdepth 0 -type d
基本上是通过-type d
条件来过滤“*”的扩展,即当前目录中的所有条目。
好处是,输出与ls -1 *
相同,但只有目录和条目不以点开始
您可以使用ls -d */
或tree -d
另一个解决scheme是globbing,但是这取决于你正在使用的shell,如果支持目录的globbing。
比如ZSH:
zsh # ls *(/)
find . -maxdepth 1 -type d -name [^\.]\* | sed 's:^\./::'
由于有几十种方法可以做到这一点,下面是另外一种方法:
tree -d -L 1 -i --noreport
- -d:目录
- -L:树的深度(因此1,我们的工作目录)
- -i:没有缩进,只打印名字
- –noreport:不要在树列表末尾报告信息
答案取决于你的shell 。
例如,在zsh
,您可以执行以下操作:
echo *(/)
并显示当前工作目录内的所有目录。
请参阅man zshexpn
以获取更多信息。
另一种方法是使用find(1)
,它应该适用于大多数Unix版本:
find . -maxdepth 1 -type d -print
find(1)
有很多用途,所以我肯定会推荐man find
。
ls -l | grep '^d'
您可以制作别名并将其放入configuration文件中
alias ld="ls -l| grep '^d'"
您可以使用带有d
开关的tree
命令来完成此操作。
% tree -d tstdir tstdir |-- d1 | `-- d11 | `-- d111 `-- d2 `-- d21 `-- d211 6 directories
见man tree
更多的信息。
用这个来获取目录的列表
ls -d */ | sed -e "s/\///g"
find specifiedpath -type d
如果你不想在子目录中recursion,你可以这样做:
find specifiedpath -type d -mindepth 1 -maxdepth 1
请注意,“dot”目录(其名称以.
开始)也将列出; 但不是特殊的目录.
也没有..
如果你不想要“点”目录,你可以grep
它们:
find specifiedpath -type d -mindepth 1 -maxdepth 1 | grep -v '^\.'
为了列出当前工作目录中的目录,可以使用ls -d */
。 如果你需要列出隐藏的目录,使用这个命令ls -d .*/
如果我有这个目录:
ls -l
lrwxrwxrwx 1 nagios nagios 11 août 2 18:46 conf_nagios -> /etc/icinga -rw------- 1 nagios nagios 724930 août 15 21:00 dead.letter -rw-r--r-- 1 nagios nagios 12312 août 23 00:13 icinga.log -rw-r--r-- 1 nagios nagios 8323 août 23 00:12 icinga.log.gz drwxr-xr-x 2 nagios nagios 4096 août 23 16:36 tmp
要获取所有目录,请使用-Lparsing链接:
ls -lL | grep '^d'
drwxr-xr-x 5 nagios nagios 4096 août 15 21:22 conf_nagios drwxr-xr-x 2 nagios nagios 4096 août 23 16:41 tmp
没有-L:
ls -l | grep '^d'
drwxr-xr-x 2 nagios nagios 4096 août 23 16:41 tmp
conf_nagios目录缺失。
这一直在为我工作:
`ls -F | grep /`
(但是,我正在切换到echo */
由@nos提到)
### If you need full path of dir and list selective dir with "name" of dir(or dir_prefix*): find $(pwd) -maxdepth 1 -type d -name "SL*"