有没有一种简单的方法可以通过命令提示符重命名多个文件(按照命名约定)?

Is there an easy way to rename multiple files (along a naming convention) through command prompt?

我在一个文件夹中有数百个文件,目前格式为:(#######-ccc)_(1),其中#代表一个整数,c代表一个字母。我需要将它们全部重命名为#######_ccc_1。有没有一种简单的方法可以通过命令提示符执行此操作,还是必须手动完成?我明白 mv 函数一次只能取一个。

ls 输出如下所示:

04/15/2021  06:39 PM    <DIR>          ..
04/15/2021  06:39 PM            34,436 (1101110-PMC)_(1).jpg
04/15/2021  06:39 PM            24,868 (1101111-PMC)_(1).jpg
04/15/2021  06:39 PM            24,842 (1102690-MARB)_(1).jpg
04/15/2021  06:39 PM            48,451 (1118150-DIVE).jpg

一种方法只使用 bash:

# Make sure extended pattern matching operators are enabled
# (Should already be on in interactive shell sessions)
# +(pattern) matches one or more occurences of pattern
shopt -s extglob

for file in \(+([[:digit:]])-+([[:alpha:]])\)_\(1\); do
    # Remove all parens and change first dash to underscore.
    newfile="${file//[()]}"
    mv "$file" "${newfile/-/_}"
done

或使用 prename(通常作为 perl 的一部分安装):

prename 's/[()]//g; s/-/_/' \(+([[:digit:]])-+([[:alpha:]])\)_\(1\)