Linux 使用“重命名”更改复杂文件名中的一个数字

Linux 使用“重命名”更改复杂文件名中的一个数字,linux,perl,rename,Linux,Perl,Rename,使用Linux命令行工具,我们希望更改以下格式的文件名: SC1177.2.0002.2015.09.16.18.05.05.900577.177003720.IMA 除了第二个数字加100外,我们想保持一切不变。这样文件名就会变成: SC1177.102.0002.2015.09.16.18.05.05.900577.177003720.IMA 请注意,我们不能只加前缀“10”,因为另一个文件名是: SC1177.10.0032.2015.09.16.18.05.05.900577.177

使用Linux命令行工具,我们希望更改以下格式的文件名:

SC1177.2.0002.2015.09.16.18.05.05.900577.177003720.IMA
除了第二个数字加100外,我们想保持一切不变。这样文件名就会变成:

SC1177.102.0002.2015.09.16.18.05.05.900577.177003720.IMA
请注意,我们不能只加前缀“10”,因为另一个文件名是:

SC1177.10.0032.2015.09.16.18.05.05.900577.177107276.IMA
然后应该变成:

SC1177.110.0032.2015.09.16.18.05.05.900577.177107276.IMA

您可以使用awk帮助进行重命名。例如,如果文件名位于变量
name
中,则可以使用以下命令更改名称:

newname=`awk -F. -v OFS=. '{$2+=100};1' <<<$name`

newname=`awk-F.-vofs=.'{$2+=100};1'谢谢!!也许做了一些非常愚蠢的事情,但只需在ubuntu命令行中输入,最后一行挂起“>”。无法恢复正常提示。输入错误。。。刚刚修复。仅供参考-我只测试了第一个代码块。。。这就是打字错误。太棒了!但我们必须纠正一个打字错误。第三行的名称后面有一个$需要删除。然后它成功了。非常感谢你!哎呀!抱歉-我的打字错误修正添加了一个打字错误。
for name in SC*; do
    newname=`awk -F. -v OFS=. '{$2+=100};1' <<<$name`
    mv "$name" "$newname"
done