использование scp переименование всех файлов

Я отправляю файлы с одного сервера на другой с помощью scp. Мне нужно переименовать файлы после отправки этого. Так что я использую следующую команду для каждого файла

scp original-hc.db user@host:/dir/original-hc_1.db 

Я хочу отправить все файлы с помощью одной команды с переименованием файлов. подобно

 scp *.db user@host:/dir/(actual file name before extension)_1.db 

Пожалуйста помоги.

2 Solutions collect form web for “использование scp переименование всех файлов”

Этого можно легко добиться с помощью петли

 for f in *.db do scp "$f" user@host:/dir/"${f%.db}"_1.db done 

Конструкция ${f%.db} удаляет суффикс .db из $f .

scp не может переименовывать файлы, поэтому вам нужно будет использовать какой-либо другой инструмент в дополнение или вместо этого.

Если у вас есть доступ к SFTP, а не только доступ к SCP, вы можете использовать SSHFS, чтобы удаленные файлы отображались на вашем локальном компьютере. Это позволяет использовать любой инструмент копирования и переименования файлов.

 mkdir mnt sshfs user@host:/dir pax -rw -pe -s'/\.db$/_1.db/' *.db mnt fusermount -u mnt 

Вместо pax (который POSIX, но иногда не установлен по умолчанию в Linux, хотя он всегда доступен как пакет), вы можете использовать GNU или BSD tar, zsh zsh и т. Д. Или просто цикл, который выполняет копию:

 for x in *.db; do cp -p "$x" "mnt/${x%.db}_1.db" done 

Вы можете использовать метод цикла, даже если у вас нет SSHFS, но тогда вы должны использовать scp в цикле.

 for x in *.db; do scp -p "$x" "user@host:/dir/${x%.db}_1.db" done 

Настройка соединения SSH для каждого времени может быть немного медленной. С OpenSSH вы можете открыть соединение один раз, а затем контрейлерные. См. Использование уже установленного SSH-канала

Другой метод (требующий полного доступа к оболочке на сервере) заключается в архивировании файлов и копировании архива и применении шага переименования при архивировании или извлечении. Например, если у вас есть GNU tar локально (что всегда имеет место для не встроенных Linux и часто доступно, возможно, как gtar , в других вариантах unix):

 tar -cf - --transform '/\.db$/_1.db/ *.db | ssh user@host 'cd /dir && tar -xf -' 

С помощью BSD tar замените --transform на -s . Если у вас очень ограниченный tar, но GNU tar или BSD tar на сервере, вы можете сделать переименование на стороне сервера.

Возможно, вы захотите вставить шаг сжатия, если пропускная способность сети является узким местом. С помощью метода архива вы можете вставить шаги в конвейер:

 tar -czf - --transform '/\.db$/_1.db/ *.db | ssh user@host 'cd /dir && gunzip | tar -xf -' 

Или вы можете выполнить сжатие на уровне SSH, передав параметр -C в ssh , sshfs или scp .

  • Как написать вывод на экран из службы systemd во время загрузки?
  • Удалить строку с пробелами и цитатами из xml-файла
  • эхо-имена и количество строк для каждого файла в каталоге
  • настроить принтер lpd для печати на принтер и файл
  • Найти и заменить рекурсивный
  • Ошибка "dircolors: нет переменной окружения SHELL, и параметр типа оболочки не указан"
  • Почему «$ Namefile» дает мне такой результат?
  • Проверка состояния настраиваемых служб со сценарием
  • IFS null - это не то же самое, что unset IFS?
  • Автозагрузка конкретного драйвера на основе обнаруженного определенного ядра
  • Как узнать, существует ли каталог?
  • Interesting Posts

    Вопрос возврата каретки

    Установленный openSuse и теперь не может загружаться с USB или DVD

    Можно ли подключить локальный пакет-репо?

    как установить и использовать несколько параметров в одной переменной окружающей среды в рыбной раковине

    GNU Emacs; Предлагает ли версия графического интерфейса больше, чем возможность иметь меню графического интерфейса?

    awk, чтобы вырезать часть поля и все еще печатать всю строку

    md raid5: перевести номера внутреннего сектора md в смещения

    Bash – файл, массивы и выходные данные

    Как запустить команду glob ZSH рекурсивно для подкаталогов

    Не удается подключиться к модему 3g во время установки Arch

    Как сделать параллельное ssh прекратить запрос пароля?

    установка проприетарных драйверов nvidia Kali 2016.2

    Создайте конфигурационный файл устройства ввода xorg только для определенного устройства

    Остановите моего коллегу от наблюдения за моей X-сессией

    Как удалить спецификацию из файла UTF-8?

    Linux и Unix - лучшая ОС в мире.