使用带'rename'的通配符

问题描述 投票:5回答:2

我一直在使用rename命令批量重命名文件。到目前为止,我有类似的文件:

2010.306.18.08.11.0000.BO.ADM..BHZ.SAC
2010.306.18.08.11.0000.BO.AMM..BHZ.SAC
2010.306.18.08.11.0000.BO.ASI..BHE.SAC
2010.306.18.08.11.0000.BO.ASI..BHZ.SAC

并使用rename 2010.306.18.08.11.0000.BO. "" *rename .. _. *将它们简化为:

ADM_.BHZ.SAC
AMM_.BHZ.SAC
ASI_.BHE.SAC
ASI_.BHZ.SAC

这正是我想要的。我猜有点笨拙,但是可以。现在出现问题,因为我有以下文件:

2010.306.18.06.12.8195.TW.MASB..BHE.SAC
2010.306.18.06.14.7695.TW.CHGB..BHN.SAC
2010.306.18.06.24.4195.TW.NNSB..BHZ.SAC
2010.306.18.06.25.0695.TW.SSLB..BHZ.SAC

存在于同一文件夹中。我一直在尝试使用rename命令中的通配符来获得与上述类似的结果。 rename 2010.306.18.*.*.*.*. ""但这会将2010.306.18.*.*.*.*.的首次出现附加到所有其他文件的开头-显然不是我所追求的,所以我得到了:

2010.306.18.06.12.8195.TW.MASB..BHE.SAC
2010.306.18.06.12.8195.TW.MASB..BHE.SAC2010.306.18.06.14.7695.TW.CHGB..BHN.SAC
2010.306.18.06.12.8195.TW.MASB..BHE.SAC2010.306.18.06.24.4195.TW.NNSB..BHZ.SAC
2010.306.18.06.12.8195.TW.MASB..BHE.SAC2010.306.18.06.25.0695.TW.SSLB..BHZ.SAC

我想我在这里不了解通配符的基本原理,因此,有人可以解释一下为什么这不起作用以及我可以做些什么来获得期望的结果(最好使用rename)。


NB。

为了澄清,输出要是:

ADM_.BHZ.SAC
AMM_.BHZ.SAC
ASI_.BHE.SAC
ASI_.BHZ.SAC
MASB.BHE.SAC
CHGB.BHN.SAC
NNSB.BHZ.SAC
SSLB.BHZ.SAC
bash unix wildcard rename
2个回答
5
投票

rename不允许在fromto字符串中使用通配符。当您运行rename 2010.306.18.*.*.*.*. "" *时,实际上是您的外壳程序首先扩展了通配符,然后将扩展结果传递给rename,因此为什么它不起作用。


16
投票

您可以先尝试一下以查看将执行哪些命令

© www.soinside.com 2019 - 2024. All rights reserved.