Copiando a quantidade exata de arquivos via scp

1

Estou copiando imagens do meu iphone via scp, onde nomes de arquivos são parecidos com este IMG_3134.JPG . E digamos que eu queira copiar arquivos de IMG_3094.JPG para IMG_3134.JPG . Usar caracteres especiais como * ou ? não me levará a lugar algum e um simples script bash como este

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

requer para digitar uma senha toda vez que o arquivo é copiado. Como fazer isso?

    
por user312952 26.08.2015 / 22:59

2 respostas

3

Você pode usar bash expansão de contraventores :

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

para gerar nomes de arquivos de IMG_3094.JPG para IMG_3134.JPG .

Na verdade, tem duas expansões:

  • IMG_30{94..99}.JPG será expandido de IMG_3094.JPG para IMG_3099.JPG

  • IMG_31{00..34}.JPG será expandido de IMG_3100.JPG para IMG_3134.JPG

Então, o seu scp pode ser feito com este forro:

scp IMG_30{94..99}.JPG IMG_31{00..34}.JPG [email protected]:/home/user/
    
por heemayl 26.08.2015 / 23:09
0

Outra solução usando um for loop para coletar os nomes dos arquivos na variável $files e a seqüência de números entre os dois argumentos fornecidos como parâmetros de entrada para o seu script, você pode tentar o seguinte:

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

scp $files [email protected]:/home/user/
    
por uloBasEI 26.08.2015 / 23:24