我写了一个简单的
shell脚本来查找大文件,主要是为了节省一些打字.这项工作正在完成:
find $dir -type f -size +"$size"M -printf '%s %p\n' | sort -rn
我想将字节输出转换为人类可读的格式.我在网上找到了如何手动执行此操作的方法,例如,
find $dir -type f -size +"$size"M -printf '%s %p\n' | sort -rn |
awk '{ hum[1024**4]="TB"; hum[1024**3]="GB"; hum[1024**2]="MB"; hum[1024]="KB"; hum[0]="B";
for (x=1024**4; x>=1024; x/=1024){
if ($1>=x) { printf "%7.2f %s\t%s\n",$1/x,hum[x],$2;break }
}}'
但这看起来很混乱.我想知道:是否有一种将字节转换为人类可读形式的标准方法?
当然,在目录和min-size作为输入的情况下,任何产生以下输出的替代方法也是受欢迎的:
1.25 GB /foo/barf
598.80 MB /foo/bar/bazf
500.58 MB /bar/bazf
421.70 MB /bar/baz/bamf
...
注意:这必须适用于2.4和2.6,并且应该对输出进行排序.