gpt4 book ai didi

bash - 使用带有 'rename' 的通配符

转载 作者:行者123 更新时间:2023-11-29 09:01:22 25 4
gpt4 key购买 nike

我一直在使用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

并使用重命名 2010.306.18.08.11.0000.BO。 ""*重命名 .. _. * 我已将它们缩减为:

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 命令中使用通配符来获得与上面类似的结果,例如。 重命名 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) .


注意

澄清一下,输出是:

ADM_.BHZ.SAC
AMM_.BHZ.SAC
ASI_.BHE.SAC
ASI_.BHZ.SAC
MASB.BHE.SAC
CHGB.BHN.SAC
NNSB.BHZ.SAC
SSLB.BHZ.SAC

最佳答案

你可以先试试看会执行什么命令

for f in *; do echo mv $f `echo $f | sed 's/2010.*.TW.//'` ; done

如果是您所期望的,您可以从要执行的命令中删除echo

for f in *; do mv $f `echo $f | sed 's/2010.*.TW.//'` ; done

关于bash - 使用带有 'rename' 的通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12601373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com