免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4682 | 回复: 5
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
2 [报告]
发表于 2018-06-16 19:38 |只看该作者
回复 1# nina0622

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

论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
3 [报告]
发表于 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
4 [报告]
发表于 2018-06-17 11:08 |只看该作者
回复 3# christmas1102

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

论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
5 [报告]
发表于 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
复制代码


端午快乐

论坛徽章:
24
申猴
日期: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:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
6 [报告]
发表于 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP