我必須將具有幾百萬個文件的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