首页 > 解决方案 > 如何使用通配符包含未知数量的前导零

问题描述

我想将一些文件从远程计算机复制到我自己的计算机中。这些文件具有以下结构:

file00001sub0
file00001sub1
file00001sub2
file00123sub0
file00123sub1
file00123sub2

我目前正在复制它们script.sh

 scp me@computer:file${1}sub* ./

这意味着我必须做类似的script.sh 00001事情script.sh 00123

如何使用尾随零进行这项工作?位数目前是固定的,所以原则上我可以在脚本中手动添加零,但必须有更好的方法。

标签: bashwildcard

解决方案


我会printf -v用来创建一个新的 0 填充变量,例如:

$ x=254
$ printf -v newx "%05s" "${x}"
$ echo "${newx}"
00254

解决 OP 支持可变位数的附加要求......

假设:OP可以确定位数

$ n=6               # number of digits
$ x=284
$ printf -v newx "%0*s" "${n}" "${x}"
$ echo "${newx}"
000284

推荐阅读