Несмотря на то, что код в вашем вопросе вообще не работает, для решения вопроса «как я могу неразрушающим образом переместить файл, добавив числовой суффикс», что-то вроде этого может сработать:
$ cat mvr.sh
#!/usr/bin/env bash
bail() {
retcode=$1
shift
printf "%s" "$*" 1>&2
exit "$retcode"
}
[[ -f "$1" ]] || bail 1 "File '$1' not found"
if ! [[ -f "$2" ]]; then
mv "$1" "$2"
else
if [[ -d "$2" ]]; then
$0 "$1" "${2}/${1}"
exit $?
else
suffix=1
until ! [[ -f "${2}.$suffix" ]]; do
suffix=$((suffix+1))
done
mv "$1" "${2}.$suffix"
fi
fi
В действии:
$ ls
bar bar.1 bar.2 mvr.sh
$ touch foo; ls
bar bar.1 bar.2 foo mvr.sh
$./mvr.sh foo bar
$ ls
bar bar.1 bar.2 bar.3 mvr.sh
Основная суть того, как это сделать, начинается с оператора if
.
mv
. Попробуйте экранированную строку
sed $'s/$/\033[K/g'
Параметр $'...'
сообщает оболочке, что нужно обрабатывать escape-символы внутри того, что в противном случае является литеральной одиночной -строкой в кавычках