在 linux 上重命名具有不同扩展名的多个文件

Rename multiple files with different extensions on linux

我有一堆具有不同扩展名的文件,我想在所有文件名的末尾添加一个后缀:

Fe2-K-D4.rac
Fe2-K-D4.plo
Fe2-K-D4_iso.xy
...

Fe2-K-D4-4cc8.rac
Fe2-K-D4-4cc8.plo
Fe2-K-D4-4cc8_iso.xy
...

我阅读了一些关于使用重命名工具更改扩展名的帖子,但我不知道如何更改名称并保持相同的扩展名(我是最近的 linus 用户)。

感谢您的帮助

使用Extract filename and extension in Bash,我会说:

for file in *
do
  extension="${file##*.}"
  filename="${file%.*}"
  mv "$file" "${filename}-4cc8.${extension}"
done

这将遍历所有文件,获取其名称和扩展名,然后将其移动(即重命名)到给定的名称,并在扩展名前添加一个额外的 -4cc8 值。

使用rename:

rename 's/[.]([^.]+)$/-4cc8./' *

s/[.]([^.]+)$/-4cc8./ 是一个 perl expression of the form s/PATTERN/REPLACEMENT/ 它告诉 rename 进行全局替换。

[.]([^.]+)$ 是一个正则表达式模式,含义如下:

[.]     match a literal period
(       followed by a group
  [     containing a character class
    ^.  composed of anything except a literal period  
  ]+    match 1-or-more characters from the character class
)       end group
$       match the end of the string.

替换模式 -4cc8. 告诉 rename 将匹配的文本替换为文字 -4cc8. 后跟第一组匹配的文本,即文字句点之后的任何内容。