如何使用终端批量重命名文件

如何使用终端批量重命名文件

如果我有一组类似这样的文件:

1-3-Image Export-08_s3c1.jpg

我想将第一部分重命名为如下所示的内容,通过添加并将第一部分替换为“G2_NR2_replicate2”:

G2_NR2_replicate2_s3c1.jpg

我如何在终端中批量处理这个?

答案1

rename在所有文件所在的目录中运行以下命令.jpg

rename 's/^[^_]*(.*)$/G2_NR2_replicate2\1/' *.jpg

它重命名所有格式为(姓名),

1-3-Image Export-08_s3c1.jpg
1-3-Image Export-08_s3c2.jpg
......
1-3-Image Export-08_s3c1000.jpg

G2_NR2_replicate2_s3c1.jpg
G2_NR2_replicate2_s3c2.jpg
.....
G2_NR2_replicate2_s3c1000.jpg

解释:

's/^[^_]*(.*)$/G2_NR2_replicate2\1/'

  1. rename命令的作用与命令相同sed。(s/pattern/replace/

  2. 在模式部分,我们给出模式如下^[^_]*(.*)$

    • ^--> 起点

    • [^_]*--> 匹配除_零次或多次之外的任何字符。因此它匹配到此部分1-3-Image Export-08,并且捕获此部分之后的任何字符(s3c1)并将其存储到由此模式表示的组中(.*)$

    • G2_NR2_replicate2现在在替换部分,我们放置由 op( ) 加上捕获的组给出的文本。

  3. 最后rename命令执行整个操作。

答案2

编辑:@Avinash Raj 的答案更好。改用命令,rename如下所示。

尝试sed使用for。参见:http://www.linuxquestions.org/questions/linux-general-1/bash-bulk-rename-files-4175429502/#post4792222

相关内容