linux中的rename命令

rename命令用字符串替换的方式批量改变文件名。

语法
rename(参数)
参数
原字符串:将文件名需要替换的字符串;
目标字符串:将文件名中含有的原字符替换成目标字符串;
文件:指定要改变文件名的文件列表。
实例
将main1.c重命名为main.c

rename main1.c main.c main1.c
rename**支持通配符**

? 可替代单个字符
* 可替代多个字符
[charset] 可替代charset集中的任意单个字符
文件夹中有这些文件foo1, …, foo9, foo10, …, foo278

如果使用rename foo foo0 foo?,会把foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0。

如果使用rename foo foo0 foo??,foo01到foo99的所有文件都被重命名为foo001到foo099,只重命名5个字符长度名称的文件,文件名中的foo被替换为foo0。

如果使用rename foo foo0 foo*,foo001到foo278的所有文件都被重命名为foo0001到foo0278,所有以foo开头的文件都被重命名。

如果使用rename foo0 foo foo0[2]*,从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换为foo。

rename支持正则表达式

字母的替换

rename “s/AA/aa/” * //把文件名中的AA替换成aa
修改文件的后缀

rename “s//.html//.php/” * //把.html 后缀的改成 .php后缀
批量添加文件后缀

rename “s/$//.txt/” * //把所有的文件名都以txt结尾
批量删除文件名

rename “s//.txt//” * //把所有以.txt结尾的文件名的.txt删掉
如我们想把文件扩展名为.bak 的文件扩展名去掉,可以这样

$ rename ‘s/.bak$//’ *.bak
*.bak 为通配符(wildcard),会被shell展开为各个文件名
去除文件名中的空格

$ rename ‘s/ //g’ *
g 是global的意思,替换所有的空格为空字符(也就是删除啦)
文件名转为小写
$ rename ‘y/A-Z/a-z/’ *
使用分组
现在有一堆文件,他们的文件名模式是这样的第一部分-haha-第二部分.file ,现在要把中间的-haha- 删去并把第一部分的字符串和第二部分的字符串对调,可以这样:
$ rename ‘s/(.)-haha-(.)(.file)/ 2 2 <script type="math/tex" id="MathJax-Element-37">2</script>1$3/’ *.file

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Linuxrename命令用于批量重命名文件或目录。它的语法如下: 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 是一个十分实用的命令,它可以批量修改文件名,提高工作效率。在实际应用可以根据自身需求来学习使用,强化命令行技能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值