文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>列出当前目录下的所有子目录 (更新)

列出当前目录下的所有子目录 (更新)

时间:2006-01-12  来源:WillsonZhang

  • 程序
    #!/bin/bash
    # Name: lsdir
    ls -l|tr -s ' '|grep -e '^d'|cut -d ' ' -f 8|awk '{print "["$1"]"}'
  • 程序说明
ls -l: 列出当前目录下的所有文件和子目录的详细信息。
tr -s ' ': 把每一行中的连续的多个空格替换成一个空格。
grep -e '^d': 只显示以'd'开头的行,就是子目录对应的行。
cut -d ' ' -f 8: 以空格为分隔符,抓取第8列数据,即子目录的目录名。
awk '{print "["$1"]"}': 在目录名两边加上[]。
  • 程序效果
[bin]
[boot]
[dev]
[etc]
[home]
[lib]
[media]
[mnt]
[opt]
[proc]
[root]
[sbin]
[srv]
[subdomain]
[sys]
[tmp]
[usr]
[var]

2006.01.19更新
在实际使用中,发现有如下不方便之处:
  1. 只能显示当前目录
  2. 发现有时候,ls列出的日期格式会有不同,进而导致无法正确抓到目录名。
  3. 我喜欢列出的目录格式是多列形式的,不是一行一列的形式。
因此,对上述脚本进行了改进:
    ls -l --full-time $*|tr -s ' '|grep -e '^d'|\
        cut -d ' ' -f 9|\
        awk '{print "["$1"]"}'|column
其中的'column'程序可以把输出格式化成多行。

改进后的程序输出效果:
> lsdir /
[bin]           [home]          [opt]           [srv]           [usr]
[boot]          [lib]           [proc]          [subdomain]     [var]
[dev]           [media]         [root]          [sys]
[etc]           [mnt]           [sbin]          [tmp]

如果要显示所有的子目录,包括隐含的子目录,用如下命令
> lsdir -a ~


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载