24 lines
877 B
Bash
24 lines
877 B
Bash
format_size() {
|
|
local size=$1 # En Ko
|
|
local units=("Ko" "Mo" "Go" "To" "Po")
|
|
local unit_idx=0
|
|
local decimal=0
|
|
|
|
# Tant que la taille est >= 1024 et qu'il reste des unités
|
|
while [[ $size -ge 1024 ]] && [[ $unit_idx -lt $((${#units[@]} - 1)) ]]; do
|
|
# On calcule le reste pour avoir une décimale (multiplication par 100)
|
|
# On simule scale=2 : (taille * 100 / 1024)
|
|
local total_centiemes=$(( size * 100 / 1024 ))
|
|
size=$(( total_centiemes / 100 ))
|
|
decimal=$(( total_centiemes % 100 ))
|
|
((unit_idx++))
|
|
done
|
|
|
|
# Formatage de la sortie
|
|
if [[ $decimal -eq 0 ]]; then
|
|
echo "${size}${units[$unit_idx]}"
|
|
else
|
|
# On s'assure que le decimal a toujours 2 chiffres (ex: 05 au lieu de 5)
|
|
printf "%d.%02d%s\n" "$size" "$decimal" "${units[$unit_idx]}" | sed 's/\.00//; s/0$//'
|
|
fi
|
|
} |