linux下rename命令的用法——适合大批量修改文件名

linuxrename命令的用法——适合大批量修改文件名

在看鸟哥私房菜的时候,遇到了mv这个可以修改文件名的命令。后面还有一个命令,叫rename。鸟哥让自己man帮助查询。结果自己一看,发现这个命令居然可以批量的修改文件名。

首先,看下man帮助里面的说明:
 For example, given the files
             foo1, ..., foo9, foo10, ..., foo278,  thecommands

             rename foo foo0 foo?
             rename foo foo0 foo??

      will turn them into foo001, ..., foo009, foo010, ..., foo278.

      And
             rename .htm .html *.htm

      will fix the extension of your html files.


man
帮助里给我们举了两个例子,什么意思呢,就是利用renamefoo foo0 foo? 类似这种命令,可以批量修改foo1foo2foo3这种有规律的文件名。rename的一共有三个参数,第一个参数是要修改的部分,第二个参数是修改成什么的部分,第三个是修改哪些文件。

还是要做实验,说的比较绕。
我们先在目录下建六个文件好了,分别是foo1foo2, foo11foo22foo111foo222

[root@centos-01test]# ls
foo1 foo11 foo111 foo2 foo22 foo222


现在我什么目的呢,就是要把foo后面不够三位的,前面用0代替,比如foo1修改成为foo001foo22修改成为foo022foo111foo222不变。

那我们该怎么做呢,首先,我用这个命令:rename foo foo0 foo?

?是通配符,代表一个字符,也就是我会把名字为foo?这些文件的foo部分修改成为foo0。大家想想会有什么变化。

[root@centos-01test]# rename foo foo0 foo?

[root@centos-01test]# ls

foo01 foo02 foo11 foo111 foo22 foo222


看到了吗,foo?就代表四个字符,并且含有foo的文件。我们用命令把foo修改成为了foo0,所以才会有这样的效果。接下来我们再使用这个命令:rename foo foo0 foo??

[root@centos-01test]# rename foo foo0 foo??

[root@centos-01test]# ls

foo001 foo002 foo011 foo022 foo111 foo222


看到了吧,foo??这种五个字符的都会被修改。看到这里大家就会发现,rename这个命令,一是掌握结构,而是学会用通配符。

下面,我们换几个通配符试验。*代表任意字符

[root@centos-01test]# ls

foo001 foo002 foo011 foo022 foo111 foo222

[root@centos-01test]# rename foo ofo *

[root@centos-01test]# ls

ofo001 ofo002 ofo011 ofo022 ofo111 ofo222

[root@centos-01test]# rename ofo ccc ofo*1

[root@centos-01test]# ls

ccc001 ccc011 ccc111 ofo002 ofo022 ofo222

[root@centos-01test]# rename 1 c ccc*

[root@centos-01test]# ls

ccc00c ccc0c1 cccc11 ofo002 ofo022 ofo222 //大家注意到,是从第一个出现1的时候更换的



比如我们还可以修改结尾文件名相似的。

[root@centos-01bobo]# ls

1.htm 2.htm 3.htm 4.htm 5.mmm

[root@centos-01bobo]# rename .htm .html *.htm

[root@centos-01bobo]# ls

1.html 2.html 3.html 4.html 5.mmm

[root@centos-01bobo]# rename .html @html *.html

[root@centos-01bobo]# ls

1@html 2@html 3@html 4@html 5.mmm


怎么样,是不是这个命令挺强大的。不过,大批量的创建和修改文件还是用脚本比较快速和灵活。


### 回答1: Linux中的rename命令用于批量重命名文件或目录。它的语法如下: rename [选项] '旧文件名' '新文件名' 文件名 其中,选项可以是-i(交互式重命名)、-v(显示详细信息)等。旧文件名和新文件名可以使用通配符,如*.txt表示所有以.txt结尾的文件。文件名可以是单个文件或多个文件,也可以是目录名。 例如,将所有以.txt结尾的文件名中的a替换为b,可以使用如下命令rename 's/a/b/' *.txt 这将把所有以.txt结尾的文件名中的a替换为b。 ### 回答2: rename命令是在Linux操作系统中用于批量更改文件名的命令,它有两种使用方式:基于正则表达式和基于字符串。 基于正则表达式的使用方式: rename 's/原文件名/新文件名/' 文件名或通配符 其中/原文件名/和/新文件名/分别表示要替换掉的旧文件名和要修改成的新文件名。这里的参数必须是一个正则表达式,如下所示: (1)将所有以old为结尾的文件名,改成以new为结尾的文件名: rename 's/old$/new/' * (2)将所有以test为开头的文件名,中间带有数字,并以.txt为结尾的文件名,改为以new为开头,中间包含数字,并以.txt为结尾的文件名: rename 's/^test(\d+)\.txt$/new$1\.txt/' test*.txt 基于字符串的使用方式: rename '原字符串' '新字符串' 文件名或通配符 其中原字符串和新字符串就是要替换的字符串,可以是文件名中的任何一部分。如下所示: (1)将所有文件名中的a替换成b: rename 'a' 'b' * (2)将所有文件名中的abc替换成xyz: rename 'abc' 'xyz' * 需要注意的是,rename命令只会修改文件名,并不会修改文件内容。同时,命令的执行结果也可能会受到不同系统环境的影响,例如有些系统不支持rename命令的正则表达式语法。因此,在使用该命令时需要格外小心,建议在执行命令之前,先备份相关文件。 ### 回答3: rename 命令Linux 操作系统中的一种命令,主要用于批量修改文件名。在 Linux 中,使用 rename 命令对多个文件名进行修改特别方便,它可以快速的批处理大量文件名,而不用逐个文件名修改。 rename 命令用法主要是:rename [options] expression replacement file(s)。 其中 options 表示可以为多个选项,expression 表示要匹配的表达式,replacement 表示要替换的字符或字符串,file(s) 表示要修改的文件名。 下面是 rename 命令的一些实例: 1. 批量将文件名从大写转换成小写: $ rename 'y/A-Z/a-z/' * 2. 如果想要把所有文件名中的“old”替换成“new”,可以使用: $ rename 's/old/new/' * 3. 替换所有 .txt 结尾的文件名: $ rename 's/\.txt$/.bak/' *.txt 4. 删除文件名中的数字和下划线: $ rename 's/[0-9_]//' * 5. 批量删除文件名中的特殊字符: $ rename 's/($`%&@!#^*)(}{][?/><|:;,.=`){}_+//' * 总结:rename 命令Linux 中是一个十分实用的命令,它可以批量修改文件名,提高工作效率。在实际应用中可以根据自身需求来学习使用,强化命令行技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值