1

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

所以,例如

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

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

例如

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

任何指针?

4

1 回答 1

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从我的代码段中删除命令。

于 2013-03-12T14:03:53.270 回答