我文件夹中有多个文件,其名称格式为: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