在Linux中重命名多个文件shell

Lin*_*les -2 linux bash file

我有一些文件,如file_022.bmp,file_023.bmp ... file_0680.bmp.我需要将这些重命名为更方便的东西,例如file_1.bmp,file_2.bmp ... file_658.bmp.

是否有一个bash脚本我可以写给我这样做?感谢您的帮助和建议.

卢克H.

Har*_*hof 5

如果您使用的是基于debian的Linux系统,那么您可以使用重命名脚本来接受正则表达式来重命名文件.更多信息,因为我发现很难找到手册页.

例如

harald@Midians_Gate:~$ ls p*.php

parse.php  pd.php  pgrep.php  preg_based.php  proc.php
Run Code Online (Sandbox Code Playgroud)

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

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

会给

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
Run Code Online (Sandbox Code Playgroud)

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

-n选项使其无需更改任何内容即可进行测试运行

正如你从这个例子中看到的那样你需要正确地考虑选择正则表达式,或者你得到像上面preg_based.php这样的情况,你需要file_preg_based.perl :)来补偿我需要在([a-z_]*)这里使用的

这是我一直坚持使用debian的众多原因之一,我很乐意找到其他非debian系统的等价物: - /

  • 您可以查看本手册.http://manpages.ubuntu.com/manpages/dapper/man1/prename.1.html (2认同)