通过 scp 复制准确数量的文件

通过 scp 复制准确数量的文件

我正在通过 scp 从我的 iphone 复制图片,文件名如下所示IMG_3134.JPG。假设我想将文件从复制IMG_3094.JPGIMG_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

每次复制文件时都需要输入密码。如何操作?

答案1

您可以使用bash 括号扩展

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

生成从IMG_3094.JPG到 的文件名IMG_3134.JPG

它实际上有两个扩展:

  • IMG_30{94..99}.JPG将从扩大IMG_3094.JPGIMG_3099.JPG

  • IMG_31{00..34}.JPG将从扩大IMG_3100.JPGIMG_3134.JPG

因此,你scp可以用这一行代码完成:

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

答案2

另一种解决方案是使用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/

相关内容