该命令列出当前路径下的目录:
ls -d */
模式*/到底做什么?
我们如何在上面的命令中给出绝对路径(例如ls -d /home/alice/Documents),只列出该路径下的目录?
该命令列出当前路径下的目录:
ls -d */
模式*/到底做什么?
我们如何在上面的命令中给出绝对路径(例如ls -d /home/alice/Documents),只列出该路径下的目录?
当前回答
使用Perl:
ls | perl -nle 'print if -d;'
其他回答
有四种方法可以做到这一点,每种方法都有不同的输出格式
1. 使用回声
例如:echo */, echo */*/ 以下是我得到的:
cs/ draft/ files/ hacks/ masters/ static/
cs/code/ files/images/ static/images/ static/stylesheets/
2. 只使用ls
例如:ls -d */ 这就是我得到的答案:
cs/ files/ masters/
draft/ hacks/ static/
或者作为列表(包含详细信息):ls -dl */
3.使用ls和grep
示例:ls -l | grep "^d" 以下是我得到的:
drwxr-xr-x 24 h staff 816 Jun 8 10:55 cs
drwxr-xr-x 6 h staff 204 Jun 8 10:55 draft
drwxr-xr-x 9 h staff 306 Jun 8 10:55 files
drwxr-xr-x 2 h staff 68 Jun 9 13:19 hacks
drwxr-xr-x 6 h staff 204 Jun 8 10:55 masters
drwxr-xr-x 4 h staff 136 Jun 8 10:55 static
4. Bash脚本(不推荐用于包含空格的文件名)
例如:$(ls -d */)中的i;执行echo ${i%%/};完成 以下是我得到的:
cs
draft
files
hacks
masters
static
如果你想用'/'作为结尾字符,命令将是:for i in $(ls -d */);执行echo ${i};完成
cs/
draft/
files/
hacks/
masters/
static/
显示没有/的文件夹列表:
ls -d */|sed 's|[/]||g'
使用Test -d测试项目是否为目录:
for i in $(ls); do test -d $i && echo $i ; done
下面是我只列出目录名的方法:
ls -1d /some/folder/*/ | awk -F "/" "{print \$(NF-1)}"
file * | grep directory
输出(在我的机器上)——
[root@rhel6 ~]# file * | grep directory
mongo-example-master: directory
nostarch: directory
scriptzz: directory
splunk: directory
testdir: directory
以上输出可以通过使用cut进行进一步细化:
file * | grep directory | cut -d':' -f1
mongo-example-master
nostarch
scriptzz
splunk
testdir
* could be replaced with any path that's permitted
file - determine file type
grep - searches for string named directory
-d - to specify a field delimiter
-f1 - denotes field 1