Linux_frogg-profile.d/func/common.sh

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
}