将文件名中的数字移动到开头

将文件名中的数字移动到开头

我文件夹中有多个文件,其名称格式为:SOMETEXT1 编号 SOMETEXT2.mp3 或 SOMETEXT 编号.mp3。我想将它们重命名为编号 SOMETEXT SOMETEXT2.mp3 或编号 SOMETEXT.mp3。使用 bash 和常用 GNU 命令行工具,我该如何实现此目的?

答案1

使用perl-rename(有时称为prename):

prename -v 's/^(.+) (\d+)( .+|\.[^.]+)$/\2 \1\3/' *

仅用于-n测试而不重命名。

相同之处bash

re='^(.+) ([0-9]+)( .+|\.[^.]+)$'
for file in *; do
    new=$file
    if [[ "$file" =~ $re ]]; then
        new="${BASH_REMATCH[2]} ${BASH_REMATCH[1]}${BASH_REMATCH[3]}"
    fi
    if [[ "$new" != "$file" ]]; then
        mv -v "$file" "$new"
    fi
done

相关内容