GPerson

progress-bar2

Aug 27th, 2025
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 0.99 KB | Source Code | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. BATCHSIZE=1
  4. BAR_CHAR='|'
  5. PAD_CHAR=' '
  6. LENGTH=50
  7.  
  8. BAR_POOL=$(eval "printf \"${BAR_CHAR}%.0s\" {1..$LENGTH}")
  9. PAD_POOL=$(eval "printf \"${PAD_CHAR}%.0s\" {1..$LENGTH}")
  10.  
  11. # ##############################################################################
  12.  
  13. progress-bar() {
  14.         local current=$1
  15.         local len=$2
  16.  
  17.         local perc_done=$((current * 100 / len))
  18.         local num_bars=$((perc_done * LENGTH / 100))
  19.  
  20.         echo -ne "[${BAR_POOL:0:num_bars}${PAD_POOL:0:LENGTH-num_bars}] $current/$len ($perc_done%)\r"
  21. }
  22.  
  23. process-files() {
  24.         local files=("$@")
  25.  
  26.         sleep .01
  27. }
  28.  
  29. # ##############################################################################
  30.  
  31. shopt -s globstar nullglob
  32.  
  33. echo 'finding files'
  34. files=(./**/*cache)
  35. len=${#files[@]}
  36. echo "found $len files"
  37.  
  38. for ((i = 0; i < len; i += BATCHSIZE)); do
  39.         progress-bar "$((i+1))" "$len"
  40.         process-files "${files[@]:i:BATCHSIZE}"
  41. done
  42. progress-bar "$len" "$len"
  43.  
  44. echo
  45.  
Advertisement
Add Comment
Please, Sign In to add comment