列出当前目录下的所有子目录 (更新)
时间:2006-01-12 来源:WillsonZhang
- 程序
# 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"]"}': 在目录名两边加上[]。
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更新
在实际使用中,发现有如下不方便之处:
ls -l --full-time $*|tr -s ' '|grep -e '^d'|\
cut -d ' ' -f 9|\
awk '{print "["$1"]"}'|column
其中的'column'程序可以把输出格式化成多行。
改进后的程序输出效果:
[boot]
[dev]
[etc]
[home]
[lib]
[media]
[mnt]
[opt]
[proc]
[root]
[sbin]
[srv]
[subdomain]
[sys]
[tmp]
[usr]
[var]
2006.01.19更新
在实际使用中,发现有如下不方便之处:
- 只能显示当前目录
- 发现有时候,ls列出的日期格式会有不同,进而导致无法正确抓到目录名。
- 我喜欢列出的目录格式是多列形式的,不是一行一列的形式。
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]
如果要显示所有的子目录,包括隐含的子目录,用如下命令
[bin] [home] [opt] [srv] [usr]
[boot] [lib] [proc] [subdomain] [var]
[dev] [media] [root] [sys]
[etc] [mnt] [sbin] [tmp]
如果要显示所有的子目录,包括隐含的子目录,用如下命令
> lsdir -a ~
相关阅读 更多 +