【发布时间】:2019-01-02 18:22:20
【问题描述】:
我在一个目录中有以下文件名:
file_foo_01_2010.nc
file_foo_02_2010.nc
...
file_foo_12_2018.nc
我想一次将它们全部重命名为:
file_foo_2010_01.nc
file_foo_2010_02.nc
...
file_foo_2018_12.nc
我知道我可以遍历 bash 脚本中的每个文件并这样做,但我想知道是否有更简洁的方法来做到这一点?比如:
mv file_foo_12_201?.nc file_foo_201?_12.nc
重命名每个 12 月文件等。
我本质上想将字符 9-10 与 12-15 切换,但不确定如何使用 bash 执行此操作。我知道rename,但不确定它是否可以用于我的用例。
【问题讨论】:
-
不确定副本是否准确回答了我的问题?我告诉你如何替换字符串,但不告诉你如何替换我需要的字符。
-
是的,确实如此。您想使用一种允许您使用正则表达式的工具,例如“重命名”。您需要使用两个捕获组,一个用于两个数字模式中的每一个。
-
嗯..好的。阅读了所有欺骗性的问题和答案后,我仍然不明智,仅感谢下面的答案,我才有了解决方案。我知道我必须使用
rename或类似名称,但在理解/如何执行欺骗答案未完全解释的“捕获组”方面苦苦挣扎。