Копирование точного количества файлов через 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.* user@192.168.1.2:/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.JPGIMG_31{00..34}.JPGбудет расширен отIMG_3100.JPGвIMG_3134.JPG
Так что ваши scp может быть сделано с этим одним вкладышем:
scp IMG_30{94..99}.JPG IMG_31{00..34}.JPG user@192.168.1.2:/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 user@192.168.1.2:/home/user/