![如何使用终端批量重命名文件](https://linux22.com/image/855981/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E7%BB%88%E7%AB%AF%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6.png)
如果我有一组类似这样的文件:
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/'
rename
命令的作用与命令相同sed
。(s/pattern/replace/
)在模式部分,我们给出模式如下
^[^_]*(.*)$
^
--> 起点[^_]*
--> 匹配除_
零次或多次之外的任何字符。因此它匹配到此部分1-3-Image Export-08
,并且捕获此部分之后的任何字符(s3c1
)并将其存储到由此模式表示的组中(.*)$
。G2_NR2_replicate2
现在在替换部分,我们放置由 op( ) 加上捕获的组给出的文本。
最后
rename
命令执行整个操作。
答案2
编辑:@Avinash Raj 的答案更好。改用命令,rename
如下所示。
尝试sed
使用for
。参见:http://www.linuxquestions.org/questions/linux-general-1/bash-bulk-rename-files-4175429502/#post4792222