批量重命名文件以更改数字

时间:2013-03-12 13:56:26

标签: bash

我有一个包含多个文件的目录。每个文件可以有不同的前缀和后缀,但都包含一个六位数字。我想批量重命名文件,以便更改其中一个数字(特别是第二个)。

所以,例如

*?2????* -> *?5????*

所有文件的第二个数字始终相同,但其他所有文件都不同。更复杂的是,一些文件有两个六位数字。如果两个数字都需要更新,

e.g。

*?2????*?2????* -> *?5????*?5????*

任何指针?

1 个答案:

答案 0 :(得分:0)

试试这个:

for file in *?2????*; do
    if [[ $file =~ [0-9]{6} ]]; then
        echo mv "$file" "$(sed 's/2/5/g' <<< "$file")"
    else
        echo mv "$file" "$(sed 's/[0-9]/5/2' <<< "$file")"
    fi
done

sed命令将第二次出现的数字替换为5。

如果这符合您的需求,只需从我的代码段中删除echo命令。