Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        7年前关闭。
                                                                                            
                
        
我有许多文件,例如file_022.bmp,file_023.bmp ... file_0680.bmp。我需要将它们重命名为更方便的名称,例如file_1.bmp,file_2.bmp ... file_658.bmp。

我可以编写一个bash脚本来为我做这件事吗?感谢您的帮助和建议。

路加

最佳答案

如果您使用的是基于debian的linux系统,则可以使用接受regular expressions的重命名脚本来重命名文件。更多info,因为我很难找到手册页。

例如

harald@Midians_Gate:~$ ls p*.php

parse.php  pd.php  pgrep.php  preg_based.php  proc.php


假设我想将扩展名更改为.perl并在名称前加上file_
然后我使用命令:

rename -n 's/([a-z]*)\.php/file_$1.perl/' p*.php


会给

parse.php renamed as file_parse.perl
pd.php renamed as file_pd.perl
pgrep.php renamed as file_pgrep.perl
preg_based.php renamed as preg_file_based.perl
proc.php renamed as file_proc.perl


我选择并捕获基本文件名([a-z]*),然后在替代文件$1中使用它并追加.perl,并在$ 1前面加上常规字符串file_

-n选项使它无需更改就可以测试运行

从该示例中可以看到,您需要正确地考虑选择的正则表达式,否则您会遇到类似上述preg_based.php的情况,而您需要file_preg_based.perl :)
为了弥补我在这里需要使用([a-z_]*)

这是我一直坚持使用debian的众多原因之一,尽管如此,我还是想找到与其他非debian系统相同的东西:

关于linux - 在Linux中重命名多个文件 shell ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11108735/

10-15 21:50