【发布时间】:2018-05-16 15:00:15
【问题描述】:
我编写了一个简单的 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 }
}}'
但这似乎很混乱。我想知道:是否有将字节转换为人类可读形式的标准方法?
当然,任何产生以下输出的替代方法,给定一个目录和最小大小作为输入,也是受欢迎的:
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 上都有效,并且输出应该是排序的。
【问题讨论】:
-
当你有
-type f时为什么它会列出目录? -
它没有。我只是打了个例子,没有想太多;)