我正在通过 scp 从我的 iphone 复制图片,文件名如下所示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.* [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.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 [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/