![sftp:选择所需文件进行复制的命令](https://linux22.com/image/94115/sftp%EF%BC%9A%E9%80%89%E6%8B%A9%E6%89%80%E9%9C%80%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%E5%A4%8D%E5%88%B6%E7%9A%84%E5%91%BD%E4%BB%A4.png)
我有一长串数据文件需要复制到我的服务器,它们有名称
data_1.dat
data_2.dat
data_3.dat
...
data_100.dat
从 开始data_1.dat
,我想获取所有数字增加 3 的文件,即data_4.dat
, data_7.dat
, data_10.dat
, ...
有没有办法指定这一点?现在我正在手动使用 get data_4.dat
,但必须有一种方法可以自动化这一点。
答案1
在 Linux 上:
printf -- '-get data_%d.txt\n' $(seq 1 3 100) | sftp -b - [email protected]
在 BSD 上(seq(1)
看不到):
printf -- '-get data_%d.txt\n' $(jot 100 1 100 3) | sftp -b - [email protected]
答案2
bash
支持 C 风格的循环构造,您可以利用它:
for ((i=1; i<=100; i+=3)); do echo file_$i.dat; done
替换echo file_$i.dat
为您想要对文件执行的操作。
例子:
$ for ((i=1; i<=100; i+=3)); do echo file_$i.dat; done
file_1.dat
file_4.dat
file_7.dat
file_10.dat
file_13.dat
file_16.dat
file_19.dat
file_22.dat
file_25.dat
file_28.dat
file_31.dat
file_34.dat
file_37.dat
file_40.dat
file_43.dat
file_46.dat
file_49.dat
file_52.dat
file_55.dat
file_58.dat
file_61.dat
file_64.dat
file_67.dat
file_70.dat
file_73.dat
file_76.dat
file_79.dat
file_82.dat
file_85.dat
file_88.dat
file_91.dat
file_94.dat
file_97.dat
file_100.dat