Я копирую картинки с моего 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
требует вводить пароль каждый раз, когда файл копируется. Как это сделать?
Можно использовать 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 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/