有没有一种简单的方法可以通过命令提示符重命名多个文件(按照命名约定)?
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\)
我在一个文件夹中有数百个文件,目前格式为:(#######-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\)