免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: kuangzhangshi
打印 上一主题 下一主题

如何实现按文件夹大小排序(大小里面包含G、M、K符号) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-04-08 16:02 |只看该作者
ls  -dlhS /path/*

论坛徽章:
0
12 [报告]
发表于 2009-04-08 16:11 |只看该作者
原帖由 我是DBA 于 2009-4-8 15:28 发表
[root@datacenter apache]# for i in $(ls -l |grep '^d' |du -s * |sort -nr|awk '{print $2}');do du -sh $i;done
573M    htdocs
130M    logs
73M     htdocs.tar
40M     template
19M     manual
...


du -s *是对所有文件还是对管道前的文件?

论坛徽章:
0
13 [报告]
发表于 2009-04-08 16:16 |只看该作者

回复 #12 changzi100 的帖子

我错了。。哈哈
[root@datacenter apache]# for i in $(ls -l|grep '^d' |awk '{print "du -s "$NF}'|sh|sort -nr|awk '{print $2}');do du -sh $i;done     
573M    htdocs
131M    logs
40M     template
19M     manual
16M     modules
3.4M    freeidc
2.3M    lib
1.8M    icons
1.7M    include
1.7M    bin
1.5M    bakfreeidc
408K    conf
292K    error
248K    build
128K    man
24K     cgi-bin

论坛徽章:
0
14 [报告]
发表于 2009-04-08 16:36 |只看该作者
学习了,不过还是那个问题,能不能只用du一次

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
15 [报告]
发表于 2009-04-08 16:43 |只看该作者
try:
  1. $ awk '{mul=1;if($1~/K/) mul=1024;else if ($1~/M/) mul=1024*1024;else if($1~/G/) mul=1024*1024*1024;$2=$2 " " $1*mul;print}' <(du -sh *)|sort -k 3rg|cut -d \  -f 1-2
复制代码

论坛徽章:
0
16 [报告]
发表于 2009-04-08 17:09 |只看该作者
原帖由 blackold 于 2009-4-8 16:43 发表
try awk '{mul=1;if($1~/K/) mul=1024;else if ($1~/M/) mul=1024*1024;else if($1~/G/) mul=1024*1024*1024;$2=$2 " " $1*mul;print}'  

我先好好看看,估计我得看几个小时的,看懂了在来请教。呵呵。
在这在谢谢各位了,大家非常热心。

论坛徽章:
0
17 [报告]
发表于 2009-04-08 17:58 |只看该作者
错了错了

[ 本帖最后由 ywlscpl 于 2009-4-8 18:05 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2009-04-08 17:59 |只看该作者
dba的不错.....    LZ把大家带入了胡同,其实可以现排序后在人性化的显示^_^

论坛徽章:
0
19 [报告]
发表于 2009-04-08 18:31 |只看该作者
原帖由 ubuntuer 于 2009-4-8 17:59 发表
dba的不错.....    LZ把大家带入了胡同,其实可以现排序后在人性化的显示^_^

呵呵。我也这么想来着,但是我怕问题越讲越复杂,干脆一路走到底得了。
那最简单的方法是什么呢,需求是把目录下的所有子目录按大小排序,显示出来,大小要用人性化显示。

[ 本帖最后由 kuangzhangshi 于 2009-4-8 18:36 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2009-04-08 19:08 |只看该作者
  1. du -sh * |awk '{v=substr($1,length($1),1)}v=="G"{$0="1G "$0}v=="M"{$0="2M "$0}v=="K"{$0="3K "$0}v=="0"{$0="4Z "$0}1' |sort -k1,1n -k2,2nr |awk '{print substr($0,4)}'
复制代码

[ 本帖最后由 ywlscpl 于 2009-4-8 19:28 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP