diff --git a/files/rm-progress b/files/rm-progress index 096eef7..59b1a28 100755 --- a/files/rm-progress +++ b/files/rm-progress @@ -4,7 +4,8 @@ set -e function helpexit() { echo Delete files with a progress bar. echo This command is always recursive to folders! - echo '-f to force' + echo '-f Dont ask questions' + echo '--nc Dont count files first' exit } @@ -14,6 +15,7 @@ for ((i=1; i<=${#@}; i++)) { [[ "${!i}" = "-h" ]] && helpexit [[ "${!i}" = "--help" ]] && helpexit [[ "${!i}" = "-f" ]] && { FORCE=1; RMFORCE="-f"; continue; } + [[ "${!i}" = "--nc" ]] && { NOCOUNT=1; continue; } [[ "${!i}" = "-"* ]] && helpexit FOLDERS+=( "${!i%/}" ) } @@ -30,9 +32,9 @@ function deletefiles() { i=0 while IFS= read -r -d $'\0' line; do i=$((i+1)) - percent=$((200*$i/$files % 2 + 100*$i/$files)) + [[ $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" + $(($SECONDS/3600)) $(($SECONDS%3600/60)) $(($SECONDS%60)) $i $files "$percent" "$line" rm "$line" done < <(find "$@" \( -type f -or -type l \) -print0) printf "\n" @@ -48,9 +50,9 @@ function deletefolders() { i=0 while IFS= read -r -d $'\0' line; do i=$((i+1)) - percent=$((200*$i/$folders % 2 + 100*$i/$folders)) + [[ $folders -ne 0 ]] && percent=$((200*$i/$folders % 2 + 100*$i/$folders)) printf "\r%02d:%02d:%02d %6d/%d %3d%% %s\033[0K" \ - $(($SECONDS/3600)) $(($SECONDS%3600/60)) $(($SECONDS%60)) $i $folders $percent "$line" + $(($SECONDS/3600)) $(($SECONDS%3600/60)) $(($SECONDS%60)) $i $folders "$percent" "$line" rm -r "$line" done < <(find "$@" -depth -type d -print0) printf "\n" @@ -58,19 +60,22 @@ function deletefolders() { # stop line wrapping printf '\033[?7l' trap "printf '\033[?7h'" 1 9 15 -echo Listing files in "${FOLDERS[@]}" ... files=0 folders=0 -listfiles "${FOLDERS[@]}" -echo Prepared to delete $files files - +if [[ "$NOCOUNT" -ne 1 ]]; then + echo Listing files in "${FOLDERS[@]}" ... + listfiles "${FOLDERS[@]}" + echo Prepared to delete $files files +fi if [[ $FORCE -eq 0 ]]; then echo ' to quit' read foo fi deletefiles "${FOLDERS[@]}" -listfolders "${FOLDERS[@]}" -echo Removing remaining $folders folders +if [[ "$NOCOUNT" -ne 1 ]]; then + listfolders "${FOLDERS[@]}" + echo Removing remaining $folders folders +fi deletefolders "${FOLDERS[@]}" # line wrapping printf '\033[?7h'