Chinaunix首页 | 论坛 | 博客
  • 博客访问: 109521
  • 博文数量: 39
  • 博客积分: 1031
  • 博客等级: 少尉
  • 技术积分: 315
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-18 11:35
文章分类
文章存档

2020年(1)

2017年(1)

2016年(5)

2015年(1)

2013年(1)

2011年(13)

2010年(16)

2009年(1)

我的朋友

分类: LINUX

2015-04-21 17:08:10

转载自:http://blog.csdn.net/xiangqiao123/article/details/38707131

这是一个很有趣的问题,因为作为一个shell菜鸟,我第一时间是没有任何想法的。心里纳闷为什么这样的操作Linux居然没有直接的命令实现这样的查询。
 
很自然地,第一感觉就是用awk去实现,因为菜鸟我看awk看得傻了:
 
ls -l | awk '/^[^d]/ {print $5,$9}' | sort -nr | head -1
明显ls查看完整的文件信息,过滤掉d开头的东东(目录),取出文件大小$5和名字$9两项,排序,取第一个很自然问题就变的清晰,值得讨论的是怎么实现前面过滤出文件大小和名字这一个过程。后面的sort和head不管用什么方法都一样的。
 
baidu这个问题,发现某论坛里有大神的回答。主要是针对连子目录都能查询的。因为大神用了find命令:
 
find -type f -exec stat -c "%s %n" {} \; | sort -nr | head -1
缺省路径是当前目录里,执行命令stat,同样是返回大小(以byte为单位的)和名字,blah blah。注意stat不是state就是了,某菜鸟表示每次都敲错。
 
后来在某本基础教材看到另外一个途径,用了du命令,异常膜拜:
 
du -s * | sort -nr | head -1
比前面awk简单很多。-s参数会返回当前目录里的文件大小,*会drill down出每个文件的大小。
 
不过呢,后面还是仔细学习了一下,发现这个方法是把子目录作为一个文件来看待的。所以最大文件可能是某个子目录,而不是某个文件。du的可以设置size显示的单位,比较傻瓜的是直接用-h参数,所谓的human-readable的形式。
 
所以综上所述,还是前面两个命令好了,第一个是只查询根目录最大文件,第二个是递归到每个子目录里找出最大文件。至于du往往会涉及到子目录的总和,所以第三个是查询当前目录下,最大的文件或者目录。
阅读(1245) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~