例如我有一个命令可以显示文件夹占用了多少空间
du folder | sort -n
它工作得很好,但我希望有人类可读的形式
du -h folder
但是如果我这样做的话我就无法将其按数字排序。
如何加入du folder
并du -h folder
查看按排序的输出du folder
,但第一列来自du -h folder
PS这只是一个例子。这种技术可能对我非常有用(如果可能的话)
答案1
尝试以下方法:
du -h folder | sort -h
替代方案:-n
用于数字排序
注意:-h
排序选项仅存在于较新版本的 Ubuntu 中。
答案2
这是一个更通用的方法。在两个不同的文件中获取du folder
和的输出。du -h folder
du folder > file1
du -h folder > file2
关键部分是:用合适的分隔符逐行连接file1
。file2
paste -d '#' file1 file2 > file3
(假设#
不出现在file1
和中file2
)
现在对 进行排序file3
。请注意,这将根据file1
内容进行排序,并按内容打破平局file2
。使用 提取相关结果cut
:
sort -n -k1,7 file3 | cut -d '#' -f 2
还请查看man sort
其他选项。
您也可以将其保存为别名,以便以后重复使用。为此,请将以下内容添加到 底部~/.bashrc
:
sorted-du () {
paste -d '#' <( du "$1" ) <( du -h "$1" ) | sort -n -k1,7 | cut -d '#' -f 2
}
然后,打开一个新的终端会话并执行您的新别名:
sorted-du /home
答案3
此答案适用于10.04.4LTS以及较低版本的 Ubuntu。
不幸的是,对 KMG 进行分类的准确答案既困难又复杂:
您可以使用以下方式将整个 du 命令设置为可读的命令
alias duf='du -sk * | sort -n | perl -ne '\''($s,$f)=split(m{\t});for (qw(K M G)) {if($s<1024) {printf("%.1f",$s);print "$_\t$f"; last};$s=$s/1024}'\'
我在这里找到的
http://www.earthinfo.org/linux-disk-usage-sorted-by-size-and-human-readable/
只是光盘进入你想知道的文件夹杜夫
你可以将这个 duf 别名添加到 /home/user/.profile 的末尾,以使 duf 命令成为半永久性的
结果:
user@hostname:~$ duf 0.0K Documenten 0.0K Muziek 0.0K Openbaar 0.0K Sjablonen 0.0K Video's 4.0K backup_db.sql.g 4.0K examples.desktop 12.0K xml printer ticket 52.0K hardinfo_report.html 152.0K librxtxSerial.so 2.7M jpos 4.4M nxclient_3.5.0-7_amd64.deb 6.4M nxnode_3.5.0-4_amd64.deb 6.8M Downloads 7.4M nxserver_3.5.0-5_amd64.deb 12.4M NetBeansProjects 18.1M mysqlworkbench.deb 28.3M Afbeeldingen 45.8M ergens-20110928-18.sql.gz 60.5M 2012-06-02ergens_archive.tar.gz 65.5M 2012-08-26ergens_archive.tar.gz 65.6M 2012-08-28ergens_archive.tar.gz 65.6M 2012-08-29ergens_archive.tar.gz 65.7M 2012-08-30ergens_archive.tar.gz 113.0M Bureaublad 306.2M ergens-20110928-18.sql
这就是为什么du -sch /var/* | sort -n
不起作用看到 MKKMMKKMMK 的排序
user@hostname:~$ du -sch /var/* |sort -n 0 /var/crash 0 /var/local 0 /var/lock 0 /var/opt 8,0M /var/backups 12K /var/games 16K /var/tmp 17M /var/log 68M /var/cache 104K /var/spool 144K /var/run 351M /var/lib 443M totaal 704K /var/mail
答案4
对于较新版本的 Ubuntu,请使用du -h directory | sort -h
。
我总是使用这种形式来查找失控的文件。