Копирование точного количества файлов через 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

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

1
задан 26 August 2015 в 23:59

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 user@192.168.1.2:/home/user/
3
ответ дан 27 August 2015 в 09:59
  • 1
    Прохладный, спасибо. Выполнил команду. Это было довольно быстро. Я не имею в виду даже секунду.. Спасибо за ответ. – Nick Div 18 November 2016 в 18:13

Другое решение с помощью 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/
0
ответ дан 27 August 2015 в 09:59
  • 1
    Вы упомянули, что я могу сделать те вещи при установке Ubuntu. Есть ли что-нибудь, что я могу сделать, если Ubuntu уже установлен? – user62372 19 November 2016 в 02:52

Другие вопросы по тегам:

Похожие вопросы: