Answers:
有一些工具可以将正则表达式的搜索和替换应用于整个文件名,例如perl-rename
(通常也称为prename
)。在此类工具中,您将在“捕获组”(括号)中\d+
或[0-9]+
内部匹配多个数字,并在以后根据程序($1
或\1
取决于程序)对其进行引用。
例如:
prename -v 's/file(\d+)$/file$1_xyz/' file[123]
prename -v 's/(file\d+)$/$1_xyz/' file[123]
(该-v
选项可以使姓氏打印出更改。您可以使用它-n
来打印更改,而无需实际重命名。)
您还可以使用just mv
和实现此目的sed
:
for old in file[123]; do
new=$(sed -r 's/file([0-9]+)$/file\1_xyz/' <<< "$old")
mv -v "$old" "$new"
done
但是,如果仔细观察,您实际上并不需要该数字。您要做的就是仍然添加一些静态文本,如下所示:
prename 's/$/_xyz/' file[123]
for f in file[123]; do
mv "$f" "${f}_xyz"
done