Копирование точного количества файлов через scp

Я копирую картинки с моего iphone через scp, где имена файлов выглядят так IMG_3134.JPG, И скажем, я хотел бы скопировать файлы из IMG_3094.JPG в IMG_3134.JPG, Использование специальных символов, таких как * или же ? не получишь меня нигде и простой сценарий Bash, как это

#!/bin/bash
a=$1;
b=$2;
let b=b+1
while [ $a -lt $b ]; do
    scp IMG_$a.* [email protected]:/home/user/
    let a=a+1
done

Требуется вводить пароль каждый раз, когда файл копируется. Как это сделать?

2 ответа

Решение

Ты можешь использовать bash расширение скобки:

IMG_30{94..99}.JPG IMG_31{00..34}.JPG

генерировать имена файлов из IMG_3094.JPG в IMG_3134.JPG,

На самом деле он имеет два расширения:

  • IMG_30{94..99}.JPG будет расширен от IMG_3094.JPG в IMG_3099.JPG

  • IMG_31{00..34}.JPG будет расширен от IMG_3100.JPG вIMG_3134.JPG

Так что ваши scp может быть сделано с этим одним вкладышем:

scp IMG_30{94..99}.JPG IMG_31{00..34}.JPG [email protected]:/home/user/

Другое решение с использованием for цикл для сбора имен файлов в $files переменная и последовательность чисел между двумя аргументами, предоставленными в качестве входных параметров для вашего сценария, вы можете попробовать следующее:

#!/bin/bash
files=""
a=$1
b=$2
for i in `seq $a $b`;
do
    files="$files IMG_${i}.JPG"
done

scp $files [email protected]:/home/user/
Другие вопросы по тегам