免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 3709 | 回复: 5

[文本处理] 关于查看文件大小及文件大小的延续问题 [复制链接]

论坛徽章:
0
发表于 2018-06-16 18:19 |显示全部楼层
本帖最后由 nina0622 于 2018-06-16 18:23 编辑


刚才看了一个童鞋的提问,也学习测试了一下,发现一点小问题,还渴望知道的大神可以指点一二:

查看某路径下各个文件夹的大小(文件夹命名为1,2,3,每个文件夹下面有一个文件名称为1):
  1. 代码:find /share_bio/disk8/tmp/one -type d |xargs -i du -h {}
复制代码
结果:
4.0K    /share_bio/disk8/tmp/one/1
4.0K    /share_bio/disk8/tmp/one/3
4.0K    /share_bio/disk8/tmp/one/2
16K     /share_bio/disk8/tmp/one
4.0K    /share_bio/disk8/tmp/one/1
4.0K    /share_bio/disk8/tmp/one/3
4.0K    /share_bio/disk8/tmp/one/2

疑问1:为什么会打印两次?
如果将上面的代码修改成如下所示,则结果正常:
  1. 代码:find /share_bio/disk8/tmp/one -type d |xargs -i du -h --max-depth=0 {}
复制代码


反则:代码 find /share_bio/disk8/tmp/one -type d |xargs -i du -h --max-detpth=1 {}

和第一个代码的结果一样 ?



查看某路径下各个文件夹内各个文件的大小(一切正常):
  1. 代码:find /share_bio/disk8/tmp/one -type f |xargs -i du -h {}
复制代码




论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2018-06-16 19:38 |显示全部楼层
回复 1# nina0622

  1. stat --printf "%n\t%s\n" /share_bio/disk8/tmp/one/*
复制代码

论坛徽章:
3
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:21
发表于 2018-06-16 20:50 |显示全部楼层
本帖最后由 christmas1102 于 2018-06-16 21:11 编辑

回复 1# nina0622

  1. [root@bd69 ~]# find ./Chinaunix -type d
  2. ./Chinaunix
  3. ./Chinaunix/test

  4. [root@bd69 ~]# du ./Chinaunix
  5. 8        ./Chinaunix/test
  6. 56        ./Chinaunix

  7. [root@bd69 ~]# du ./Chinaunix/test
  8. 8        ./Chinaunix/test
复制代码
所以du会输出N次相同的目录,解决方法:
  1. find ./Chinaunix -maxdepth 0 -type d |xargs -n1 du -h
复制代码
du 会输出顶层目录下的所有子目录大小,并不是给一个判断一个
所以,最直接的方法就是:直接du+你需要处理的目录

第二个问题
要牵扯 xargs 这个东西了,简单说 {}就是find传出来的结果,参照上面的测试,所以 du指定目录深度是没意义的,应该在find这里设置

论坛徽章:
0
发表于 2018-06-17 11:08 |显示全部楼层
回复 3# christmas1102

哇,谢谢大神辣么耐心的解答,哈,昨天就是看了您之前的回复去试了一下,端午节快乐呀

论坛徽章:
3
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:21
发表于 2018-06-17 11:42 |显示全部楼层
回复 4# nina0622

相互学习吧,另外补充下du -s 可以只输出指定目录,不用设置maxdepth
  1. -S, --separate-dirs   do not include size of subdirectories
  2.   -s, --summarize       display only a total for each argument
复制代码


端午快乐

论坛徽章:
21
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:23
发表于 2018-06-19 13:30 |显示全部楼层
本帖最后由 chengchow 于 2018-06-19 13:33 编辑

根目录du了一次,自动匹配下一级目录,子目录又匹配了一次,这个问题直接
cd /share_bio/disk8/tmp/one && du -sh *

就可以了

-s, --summarize       display only a total for each argument
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

【CUer福利】柯尼卡美能达2018数字化整合解决方案巡展
智领共创链动价值-2018数字化整合解决方案巡展

2018年11月,柯尼卡美能达携手主流IT网络媒体IT168及旗下ITPUB、ChinaUnix等论坛,特此邀请企业IT管理、运维人员/办公设备采购负责人员共同参与,分享柯尼卡美能达“智领共创链动价值”-2018数字化整合解决方案巡展!现场体验MOBOTIX智能视频监控解决方案!

活动入口>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP