我必须将具有几百万个文件的20TB文件系统移动到ZFS文件系统。所以我想了解一下文件大小,以便选择一个好的块大小。在非常大的文件系统上获取每个文件的文件大小
我目前的想法是`stat --format =“%s”每个文件,然后将文件分成bin。
#!/bin/bash
A=0 # nr of files <= 2^10
B=0 # nr of files <= 2^11
C=0 # nr of files <= 2^12
D=0 # nr of files <= 2^13
E=0 # nr of files <= 2^14
F=0 # nr of files <= 2^15
G=0 # nr of files <= 2^16
H=0 # nr of files <= 2^17
I=0 # nr of files > 2^17
for f in $(find /bin -type f); do
SIZE=$(stat --format="%s" $f)
if [ $SIZE -le 1024 ]; then
let $A++
elif [ $SIZE -le 2048 ]; then
let $B++
elif [ $SIZE -le 4096 ]; then
let $C++
fi
done
echo $A
echo $B
echo $C
这个脚本的问题是,我不能让find
在for循环中工作。
问题
如何解决我的脚本?
是否有更好的方式来获得文件系统的所有文件大小?
也许使用'awk' ...但我不相信你应该制作相似大小的文件箱...... – 2013-04-21 15:06:27
你用上面的代码得到了什么错误? – Mat 2013-04-21 15:25:38
@Mat它只是没有做任何事情。所以很难说出什么问题。 – 2013-04-21 15:38:14