如何按数字排列人类可读的大小?
例如,我有命令显示空间文件夹占用了多少
du folder | sort -n
它很好用,但我希望有人类可读的forms
du -h folder
但是,如果我这样做,我不能将其排序为数字。
如何加入du folder
和du -h folder
以查看排序为du folder
输出,但是使用du -h folder
第一列
PS这只是一个例子。 这项技术对我来说可能非常有用(如果可能的话)
这是一种更通用的方法。 获取du folder
和du -h folder
du 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
尝试以下方法:
du -h folder | sort -h
替代方案: -n
用于数字排序
注意:sort的-h
选项仅存在于较新版本的Ubuntu中。
此答案适用于10.04.4LTS及更低版本的Ubuntu。
不幸的是,对KMG进行分类的准确答案是困难而复杂的:
您可以将整个du命令别名与使用此命令排序人类可读的命令
alias duf='du -sk * | sort -n | perl -ne '\''($s,$f)=split(m{\t});for (qw(KMG)) {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/
只需cd进入你想知道的文件夹然后duf
您可以将此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
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
命令GNU sort
具有以下选项:
-h
, –--human-numeric-sort
比较人类可读数字(例如,2K 1G)。要在BSD / OSX上使用此选项,您可以从
coreutils
(通过brew
)安装sort
,并将bin文件夹添加到您的rc文件中。
所以命令看起来像:
du -ah . | sort -rh | head -20
对于最新版本的Ubuntu,请使用du -h directory | sort -h
du -h directory | sort -h
。
我一直使用这种forms来查找失控文件。
使用Ctrl + Alt + t打开终端并键入:
du -sk * | sort -rn
这个处理带有空格或撇号的文件名,适用于不支持xargs -d
或sort -h
:
du -s * | sort -n | cut -f2 | tr '\n' '\0' | xargs -0 -I {} du -sh "{}"
这导致:
368K diskmanagementd 392K racoon 468K coreaudiod 472K securityd 660K sshd 3.6M php-fpm
我发现在所有系统上工作而不管版本( sort -h
对我不起作用)都是
du -h $(du * | sort -n | awk '{print $2}')
awk '{print $2}'
基本上打印文件名。