这是一个适合我的目的的公式——除其他外,它只打印文件,用于尺寸权力1024,2^10–. 涉案文件大小为 1382 字节(1.35基布):
# ls -lh | grep -v '^d' | sed -n '2p' | awk '{print $5, $(NF)}'
1,4K anaconda-ks.cfg
条件申请公式中:
- 插入 ' '前这最后的属于第一个柱子的输出;
- 插入 '信息B‘后这最后的属于第一个柱子的输出;
- 两位小数到最接近的值(例如 1,095 = 1,09,1,096 = 1,10);
- 打印与大小和文件相关的列。
输出至达到一旦条件适用:
# ls -lh | grep -v '^d' | sed <expression> | awk <expression>
1,35 KiB anaconda-ks.cfg
答案1
你应该避免解析输出ls
. 而是使用stat
命令。
numfmt
不要尝试伪造新的数字格式,而是使用coreutils 中的命令。
因此你可以使用这个:
for i in *; do
printf "%s %s\n" $(stat -c %s "$i" | numfmt --to=iec-i --suffix=B --format "%.2f") "$i"
done