Answers:
这是一种更通用的方法。获取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
file3
,将会被覆盖然后删除!@SirCharlo我正在从此答案中删除别名定义,并用更安全的名称替换它。
sort -h
尝试类似的方法:
du -h folder | sort -h
替代方法:-n
用于数字排序
注意:-h
sort选项仅在较新版本的Ubuntu中存在。
sort -h
该答案适用于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-可读/
只需将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
不起作用,请参阅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
du folder | sort -n | cut -f 2 | while IFS= read -r -d '' path; do du -sh -- "$path"; done
-d ''
,这是在file命令的输出中使用它时遗留下来的内容。
sort
。
该文件名使用空格或撇号处理文件名,并且在不支持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
\n
有\0
什么意义?这样做是否为时已晚?
xargs -0
,期望输入是NUL分隔的(如find -print0将产生的那样)。否则,您不能使用-0,并且撇号具有特殊含义。
-0
,但这无关紧要:imgur.com/87w3vfj