OpenSSH sftp
не очень мощный клиент для таких задач.Вам придется запустить его дважды.Сначала соберите список файлов, используйте этот список, чтобы сгенерировать список команд, и выполните их во втором запуске.
Примерно так:
files=`sftp -b - user@example.com <<EOF
cd /source/folder
ls
EOF`
files=`echo $files|sed "s/.*sftp> ls//"`
(
echo cd /source/folder
for file in $files; do
echo get $file
echo rename $file /backup/folder/$file
done
) | sftp -b - user@example.com
Перед запускомсценарий для рабочих файлов, я предлагаю вам сначала вывести сгенерированный список команд в файл, чтобы проверить, соответствуют ли результаты ожидаемым.
Просто замените последнюю строку на:
) > commands.txt