根据大小排序文件夹

时间:2014-11-11 08:48:53

标签: bash filesystems

我需要释放一些空间,然后我开始寻找大而无用的文件和目录。为了首先关注最大的那些

   du --max-depth=1 | sort -n 

识别当前最大的文件夹。这样做的缺点是尺寸不是“人”单位,所以很难说每个文件夹有多大。

是否有其他方法可以获取每个文件夹的大小,然后按大小对其进行排序并以人为单位显示大小?

干杯, 罗伯特

3 个答案:

答案 0 :(得分:2)

du -h以人类可读的形式显示尺寸。您无法对它们进行排序,因此只需将其应用于已排序的文件:

du --max-depth=1 | sort -n | cut -f2 | xargs du --max-depth=0 -h

注意:不适用于名称中包含空格的目录。对于这种情况,请将xargs替换为(慢得多)循环:

while read f ; do du --max-depth=0 -h "$f" ; done

答案 1 :(得分:1)

由于图片胜过千言万语,为什么不以图形方式使用http://www.marzocca.net/linux/baobab/index.html之类的东西?

enter image description here

当然,还可以使用https://apps.ubuntu.com/cat/applications/raring/linux-disk-cleaner/手动或以cron jo0b的方式删除不需要的包文件,临时文件,备份文件等。

答案 2 :(得分:0)

我一般不担心人类可读的格式,您可以使用:

 du -s * 2>/dev/null | sort -k1 -n

以正确的顺序获得它们,然后专注于最后几个。

如果您真的需要人类可读的格式,您可以使用以下内容对du的输出进行后期处理:

du -s * 2>/dev/null | sort -k1 -n | awk '{
    if ($1>999999999) {
        $1 = int($1/1000000000)"G"
    } else {
        if ($1>999999) {
            $1 = int($1/1000000)"M"
        } else {
            if ($1>999) {
                $1 = int($1/1000)"K"
            }
        }
    }
} {print $0}'

根据其大小修改第一个参数,以GB,MB,KB或单独保留,然后打印修改后的行。