如何找到一个目录下最大的三个文件?

如何找到一个目录下最大的三个文件?

https://unix.stackexchange.com/a/240424/674展示了一种在目录下查找最近更改的三个文件(直接或间接)的方法。

find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print $2}'

stat -c '%Y %n'我尝试通过替换为 来查找目录下的三个最大文件stat -c '%B %n'。但它似乎无法正常工作。因为:

 %b - Number of blocks allocated (see ‘%B’)
 %B - The size in bytes of each block reported by ‘%b’

我的猜测是,它%b不会报告文件的大小,但我不确定。

那我该怎么办呢?

答案1

%b 确实报告文件的大小,但它以块为单位报告。这对于您的目的来说可能足够好,也可能不够好。ls -l如果需要,您始终可以使用来获取字节:

find . -type f | xargs ls -l | sort -n -k5 | tail -n 3

如果文件名包含空格,则标准解决方案是

find . -type f -print0 | xargs -0 ls -l | ...

这些-print0品牌find使用空字节作为名称之间的分隔符,然后将其用作 的分隔符xargs -0

相关内容