【发布时间】:2016-05-11 12:21:58
【问题描述】:
我一直想知道这个问题,但我经常遇到以下情况:文件夹或文件按以下约定命名:
- 1R143D1B
- 2R143D1B
- 3R243D1B
- 4R343D1B
- 5R343D1B
例如,第一个数字 (1-5) 代表扫描。紧随“R”之后的第二个数字(1、1、2、3)代表一天。 43D1B 是科目编号。
我经常遇到需要进入多个主题文件夹的情况(例如,命名约定中唯一改变的是 '43D1B' 到其他主题值,如 '44U2A')这样命名并且经常想到那里将是像'for'循环这样的方式,所以我可以编写一些允许我生成这些值的代码,而无需对 cp(或任何其他)命令进行硬编码。
所以不是硬编码,例如,cp /home/1R143D1B/1R143D1B.file /newfolder 并这样做了 50 多次,我希望能够使第一个值(扫描值)成为 for 循环或数组变量,第二个(天值)值另一个变量,所以我可以做类似cp /home/${var1}R${var2}${subject}/${var1}R${var2}${subject}.file /newfolder
但是每当我从逻辑上考虑这个问题时,我都不确定最好的解决方法,因为上面的约定是这样设置的 - 扫描 1 和 2 总是在第 1 天,扫描 3 总是在第 2 天,并且第 4 和第 5 次扫描始终在第 3 天进行,因此数字 1-5 并不都与数字 1-3 相关联,所以我不知道循环是否有效,我不确定还有什么合适的。 有人可以谈谈解决此问题的另一种方法吗?
【问题讨论】:
-
为什么不能只使用通配符?如
cp /home/?R?"$subject"/?R?"$subject".file /newfolder。