我需要找到当前目录和后续目录中最大的文件。我试过
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]
: 仅限第一场比赛。
如果有平局,您将随机获得其中任何一个。如果您想要按字母顺序排列第一个,请添加一个额外的on
(o
rder by n
ame)以按字母顺序对关系进行排序。