如何使用通配符匹配带前导零的文件名实现scp批量文件拷贝
无需输入前导零匹配远程文件的解决方案
推荐优先使用自动补全前导零的方案,匹配精准无副作用,修改成本极低:
- 步骤1:修改你的
script.sh脚本,在执行scp前先对输入的编号做格式化补零,参考代码如下:
#!/bin/bash # 此处%05d对应编号总位数为5,根据你的实际位数修改数字即可 formatted_num=$(printf "%05d" "$1") scp me@computer:file${formatted_num}sub* ./
- 步骤2:直接调用脚本即可,不需要输入任何前导零:
- 要拷贝编号1的文件,执行
script.sh 1,脚本会自动补为00001 - 要拷贝编号123的文件,执行
script.sh 123,脚本会自动补为00123
- 要拷贝编号1的文件,执行
如果只是临时使用不想修改脚本,也可以用通配符方案,注意调用时给参数加单引号避免本地解析通配符:
- 拷贝编号123的文件,执行
script.sh '*123'即可匹配前面的所有前导零,注意该方案存在匹配风险:如果存在其他末尾为123的编号(如01123)会被同时匹配,仅适合编号无重复后缀的场景临时使用。
内容的提问来源于stack exchange,提问作者user17004502
相关产品推荐
相关产品推荐

