zoukankan      html  css  js  c++  java
  • 在 Linux/UNIX/BSD 中如何查找前 10 大文件和目录

    我们怎么样在像 Linux 或者 Unix 这样的类似系统中查找前 10 大文件和目录?

    通常我们有必要需要知道哪些文件或者目录正在吞噬着磁盘空间。更进一步来说,就是需要在文件系统中的特定目录如 /tmp, /var 或者 /home 下查找。这篇文章将帮助我们在文件系统中查找最大的文件或目录。

    这里没有简单的命令让我们在 Linux/UNIX/BSD 文件系统中找到最大的文件/目录。但我们可以通过如下的四个命令组合使用来实现:

    • du 命令:估计磁盘空间使用量
    • sort 命令:排序
    • head 命令:取前几条输出
    • find 命令:查找文件

    在控制台输入如下命令找出是大的 10 个文件和目录:

    du -a /var -h | sort -n -r | head -n 10

    输出示例:

    1008372 /var
    313236  /var/www
    253964  /var/log
    192544  /var/lib
    152628  /var/spool
    152508  /var/spool/squid
    136524  /var/spool/squid/00
    95736   /var/log/mrtg.log
    74688   /var/log/squid
    62544   /var/cache
    

    如果要更可读,则可以如下:

    $ cd /path/to/some/where
    $ du -hsx * | sort -rh | head -10

    这里,

    • du -h : 以人可读的格式显示 (eg. 1K, 234M, 2G)
    • du -s : 显示每个参数的总数。 (summary)
    • du -x : 排除目录
    • sort -r : 逆序 (reverse)
    • sort -h : human readable
    • head -10 或者 head -n 10 : 显示前 10 条。

    以上命令仅在安装了 GNU/sort 后可用,其他的 类 UNIX 系统需要用如下的版本:

    for i in G M K; do du -ah | grep [0-9]$i | sort -nr -k 1; done | head -n 11

    示例输出:

    179M    .
    84M ./uploads
    57M ./images
    51M ./images/faq
    49M ./images/faq/2013
    48M ./uploads/cms
    37M ./videos/faq/2013/12
    37M ./videos/faq/2013
    37M ./videos/faq
    37M ./videos
    36M ./uploads/faq
    

    用如下的命令找出某个目录和其子目录下最大的文件:

    ## Warning: only works with GNU find ##
    find /path/to/dir/ -printf '%s %p
    '| sort -nr | head -10
    find . -printf '%s %p
    '| sort -nr | head -10

    示例输出:

    5700875 ./images/faq/2013/11/iftop-outputs.gif
    5459671 ./videos/faq/2013/12/glances/glances.webm
    5091119 ./videos/faq/2013/12/glances/glances.ogv
    4706278 ./images/faq/2013/09/cyberciti.biz.linux.wallpapers_r0x1.tar.gz
    3911341 ./videos/faq/2013/12/vim-exit/vim-exit.ogv
    3640181 ./videos/faq/2013/12/python-subprocess/python-subprocess.webm
    3571712 ./images/faq/2013/12/glances-demo-large.gif
    3222684 ./videos/faq/2013/12/vim-exit/vim-exit.mp4
    3198164 ./videos/faq/2013/12/python-subprocess/python-subprocess.ogv
    3056537 ./images/faq/2013/08/debian-as-parent-distribution.png.bak
    

    我们可以跳过目录,仅显示文件,输入:

    find /path/to/search/ -type f -printf '%s %p '| sort -nr | head -10

    或者

    find /path/to/search/ -type f -iname "*.mp4" -printf '%s %p '| sort -nr | head -10

    我们也可以用鸭子来猎取磁盘空间这头猪:

    采用 alias

    alias ducks='du -cks * | sort -rn | head'

    运行如下命令来获取最大的 10 个文件或目录:

    $ ducks

    将输出:

    这里写图片描述

    译文出处:

    http://www.cyberciti.biz/faq/how-do-i-find-the-largest-filesdirectories-on-a-linuxunixbsd-filesystem/

  • 相关阅读:
    设计一种配置文件格式(草稿)
    linux shell控制语句
    CuteC 发布(2011519)
    国外兼职外包项目大全
    寻找第K大的数的方法总结
    IEEE PDF eXpress 使用
    找出一个不在文件中的整数 编程珠玑
    BM模式匹配算法实现(C语言)
    一种可做特殊用途的字符串匹配算法
    字符设备驱动程序
  • 原文地址:https://www.cnblogs.com/qianggezhishen/p/7349338.html
Copyright © 2011-2022 走看看