bash - 如何使用通配符包含未知数量的前导零
问题描述
我想将一些文件从远程计算机复制到我自己的计算机中。这些文件具有以下结构:
file00001sub0
file00001sub1
file00001sub2
file00123sub0
file00123sub1
file00123sub2
我目前正在复制它们script.sh
:
scp me@computer:file${1}sub* ./
这意味着我必须做类似的script.sh 00001
事情script.sh 00123
如何使用尾随零进行这项工作?位数目前是固定的,所以原则上我可以在脚本中手动添加零,但必须有更好的方法。
解决方案
我会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
推荐阅读
- ggplot2 - 如何解决此错误:二进制运算符的非数字参数
- mysql - MySQL 查询 WHERE
- reactjs - 如何对循环返回的jsx的元素进行换行?
- javascript - 在 Vue.js 文件中使用 JS/JQuery
- python - tflite 转换;遇到未解决的自定义操作:TensorArrayV3.Node
- docker - Docker 堆栈/服务不起作用,如何调试?
- single-sign-on - 我们是否需要所有 AD 用户的 keytab 条目以进行基于 kerberos 的身份验证?
- python - 将坐标 [x1,y1,z1, ...,] 的平面 c_long_Array 打包到 [(x1,y2,z3), ...] 元组列表中的最快方法
- javascript - 如何将 ethers.js 与元掩码连接起来?
- asp.net - 未检测到 OWIN 启动类