добавить последовательность esc с помощью sed (\033[K)

Несмотря на то, что код в вашем вопросе вообще не работает, для решения вопроса «как я могу неразрушающим образом переместить файл, добавив числовой суффикс», что-то вроде этого может сработать:

$ 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.
  • Если он существует и является каталогом, отлично :записать в этот каталог рекурсивно.
  • Если он существует и является файлом, начните пробовать новые числовые суффиксы, пока не найдем тот, которого еще нет.
0
07.10.2020, 23:40
1 ответ

Попробуйте экранированную строку

sed $'s/$/\033[K/g'

Параметр $'...'сообщает оболочке, что нужно обрабатывать escape-символы внутри того, что в противном случае является литеральной одиночной -строкой в ​​кавычках

1
18.03.2021, 22:58

Теги

Похожие вопросы