From 2db892dd0ff3e67bd408d68f2fbe64d7dce79cb0 Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Mon, 24 Aug 2020 12:20:14 +0300 Subject: [PATCH] update numbers less frequent --- files/rm-progress | 45 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/files/rm-progress b/files/rm-progress index 1c568ee..f08c2c2 100755 --- a/files/rm-progress +++ b/files/rm-progress @@ -25,19 +25,44 @@ for ((i=1; i<=${#@}; i++)) { [[ "${#FOLDERS[@]}" -eq 0 ]] && helpexit function listfiles() { - while IFS= read -r -d $'\0' line; do + while IFS= read -r -d $'\0' line; do files=$((files+1)) - printf "\r%02d:%02d:%02d %d" $(($SECONDS/3600)) $(($SECONDS%3600/60)) $(($SECONDS%60)) $files + printf "\r%02d:%02d:%02d %d" $(($SECONDS/3600)) $(($SECONDS%3600/60)) $(($SECONDS%60)) $files done < <(find "$@" \( -type f -or -type l \) -print0) printf "\r" } function deletefiles() { i=0 - while IFS= read -r -d $'\0' line; do + done_update=-10 + left_update=0 + filespad=${#files} + timeleft=" : : " + printf "\r%8s %8s %${filespad}s%${filespad}s %3s %s\n" \ + Time Left " " Files " " Name + while IFS= read -r -d $'\0' line; do + # Print progress i=$((i+1)) - [[ $files -ne 0 ]] && percent=$((200*$i/$files % 2 + 100*$i/$files)) - printf "\r%02d:%02d:%02d %6d/%d %3d%% %s\033[0K" \ - $(($SECONDS/3600)) $(($SECONDS%3600/60)) $(($SECONDS%60)) $i $files "$percent" "$line" + if [[ $(( $SECONDS - $done_update )) -ge 1 ]]; then + done_update=$SECONDS + done=$SECONDS + [[ $files -ne 0 ]] && percent=$((200*$i/$files % 2 + 100*$i/$files)) + printf -v timedone "%02d:%02d:%02d" \ + $(($done/3600)) $(($done%3600/60)) $(($done%60)) + fi + if [[ $(( $SECONDS - $left_update )) -ge 10 ]]; then + left_update=$SECONDS + left=$(( ($files - $i) * $SECONDS / $i )) + left_live=$left + else + left_live=$(( $left - $SECONDS + $left_update )) + fi + if [[ -n "$left" ]]; then + printf -v timeleft "%02d:%02d:%02d" $(($left_live/3600)) $(($left_live%3600/60)) $(($left_live%60)) + fi + printf "\r%s %s %${filespad}d/%${filespad}d %2d%% %s\033[0K" \ + "$timedone" "$timeleft" "$i" "$files" "$percent" "$line" + + # Delete file if [ -L "$line" ]; then rm $RMFORCE "$line" else @@ -47,15 +72,15 @@ function deletefiles() { printf "\n" } function listfolders() { - while IFS= read -r -d $'\0' line; do + while IFS= read -r -d $'\0' line; do folders=$((folders+1)) - printf "\r%02d:%02d:%02d %d" $(($SECONDS/3600)) $(($SECONDS%3600/60)) $(($SECONDS%60)) $folders + printf "\r%02d:%02d:%02d %d" $(($SECONDS/3600)) $(($SECONDS%3600/60)) $(($SECONDS%60)) $folders done < <(find "$@" -type d -print0) printf "\r" } function deletefolders() { i=0 - while IFS= read -r -d $'\0' line; do + while IFS= read -r -d $'\0' line; do i=$((i+1)) [[ $folders -ne 0 ]] && percent=$((200*$i/$folders % 2 + 100*$i/$folders)) printf "\r%02d:%02d:%02d %6d/%d %3d%% %s\033[0K" \ @@ -66,7 +91,7 @@ function deletefolders() { } # return line wrapping -trap "printf '\033[?7h'" 1 9 15 +trap "printf '\033[?7h'" 1 9 15 files=0 folders=0 if [[ "$NOCOUNT" -ne 1 ]]; then