Pmv: mv with progress bar

Bash script which display a progress bar dugin a mv operation.

#!/usr/bin/env bash

[ $# != 2 ] && printf "usage: $0  n" && exit 1
trap 'rm -rf $2' 1 2 15 # HUP INT TERM

width=$(tput cols)
length=$(($width -6))
i=1; eq=''; ws=''
while [ $i -lt $length ]; do
        eq="$eq="
        ws="$ws "
        i=$(($i + 1))
done
cur=0; tot=$(stat -c %s $1 2>/dev/null)
(mv $1 $2) &
[ -z $tot ] && wait && exit 1
while [ $cur -le $tot ]; do
        i=$(( $cur*$length/$tot ))
        percentage=$(( $cur*100/$tot ))
        printf "r[${eq:0:$i}${ws:$i}] %3d%%" $percentage
        [ $cur -eq $tot ] && break
        sleep 0.1
        cur=$(stat -c %s $2 2>/dev/null)
        [ -z $cur ] && cur=0
done
printf "n"

Save it inside ~/bin, or /usr/bin.
Make it executable.
Enjoy.

Tags: , , ,

Leave a Reply

You must be logged in to post a comment.