查找目录和子目录中最大文件的最快方法

查找目录和子目录中最大文件的最快方法

我需要找到当前目录和后续目录中最大的文件。我试过

ls -Rlh | awk '{print $3 " " $5 " " $9}' 

但不知道是否可以,如何排序并选择最大的文件。

答案1

GNUfind+sort+head解决方案(对于任何目录深度级别),假设文件路径不包含换行符:

find . -type f -printf "%s %p\n" | sort -nr | head -1
  • %s- 指向文件大小的格式说明符(以字节为单位)
  • %p- 指向文件名的格式说明符
  • sort -nr- 以相反的顺序对记录进行数字排序
  • head -1- 打印 TOP 第一行/记录

为了得到一个人类可读的文件大小值 - 使用 GNU 命令扩展管道numfmt(如果支持):

find . -type f -printf "%s %p\n" | sort -nr | head -1 | numfmt --to=si

答案2

对于zsh最大的常规文件:

ls -ld -- **/*(.DOL[1])

(当然,您可以替换ls -ld --为任何命令。如果使用 GNUls或兼容版本,另请参阅-h选项人类可读的尺寸

  • .: 仅有的常规的文件(不是目录、符号链接、设备、fifo...)
  • D:包括隐藏的并进入隐藏目录
  • OL:按大小(长度)倒序排列L
  • [1]: 仅限第一场比赛。

如果有平局,您将随机获得其中任何一个。如果您想要按字母顺序排列第一个,请添加一个额外的onorder by name)以按字母顺序对关系进行排序。

相关内容