You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让find命令输出类似ls -lrth的人类可读文件大小

递归获取目录下最大10个文件并输出人类可读大小的实现方法

重要提醒:不要直接对带K/M/G单位的大小字符串做普通排序,必须先以字节数值为依据完成排序后再转换格式,否则会出现单位混淆导致的排序错误。

你当前使用的字节排序命令逻辑是正确的,只需要补充格式转换步骤,就能输出类似ls -lrth的易读大小效果,以下是两种稳定可直接用的实现:

方案1:兼容绝大多数Linux环境的通用写法

借助numfmt工具完成字节到人类可读单位的转换,排序逻辑和原命令完全一致,不会出现大小排序错误,对特殊文件名的兼容性更好:

sudo find 11 -type f -printf "%s\t%p\n" | sort -n | tail -10 | numfmt --to=iec --field=1 --padding=6

核心参数说明:

  • --to=iec:以1024为换算单位转换为K/M/G/T等单位,和ls -h的换算规则完全一致
  • --field=1:指定只转换每行第一列的字节数值,不影响后面的文件路径
  • --padding=6:给大小列预留固定宽度,输出时列对齐更整齐易读

如果需要完全和ls -lrth的输出格式(包含权限、属主、修改时间等字段)一致,可以用以下写法:

sudo find 11 -type f -printf "%s\t%p\n" | sort -n | tail -10 | cut -f2- | xargs ls -lrth

提示:该写法在文件名包含换行符、连续特殊空格时可能出现解析异常,常规业务场景下使用没有问题。

方案2:新版系统简化写法

如果你的服务器是较新的Linux发行版(比如CentOS 8+、Ubuntu 20.04+),sort工具原生支持人类可读数值排序,可以直接用更简短的命令实现:

sudo find 11 -type f -exec ls -lh {} \; | sort -k5 -hr | head -10

核心参数说明:

  • -k5:指定按ls输出的第5列(文件大小列)作为排序依据
  • -hr:按照人类可读的容量单位做反向排序(从大到小排列)
  • 输出格式和原生ls -lrth完全一致,不需要额外做格式调整。

内容的提问来源于stack exchange,提问作者user3299633

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:42:04