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

时间:2015-05-29 12:21:51

标签: linux file-rename

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

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用户)。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

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

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

循环遍历所有文件,获取其名称和扩展名,然后将其移动(即重命名)给定名称,并在扩展名之前加上-4cc8值。

答案 1 :(得分:1)

使用rename

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

s/[.]([^.]+)$/-4cc8.$1/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.$1告诉rename将匹配的文本替换为文字-4cc8.,后跟匹配的第一个组中的文本,即文字句点后的任何内容。