Linux批量重命名(mv与rename的运用)

说明:

Linux的 rename 命令有两个版本(C语言和Perl语言),早期的Linux发行版基本上使用的是C语言版本,现在系统几乎都是Perl语言版本了(支持正则处理,功能更强大)[1]。可以通过命令man rename打开rename帮助文档查看版本,如果第一行内容如下,则是Perl语言版本。

RENAME(1) Perl Programmers Reference Guide RENAME(1)

  鉴于Perl语言版本是主流,本文只介绍该版本下rename的用法,C语言版本操作见[1]。Perl语言版本的rename命令格式如下:
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
-v(verbose)打印被成功重命名的文件
-n(no-act)只是显示将被重命名的文件,而不重命名(重命名之前可以用-n确认
需要重命名的文件)
-f(force)覆盖已经存在的文件
perlexprPerl语言格式的正则表达式
files需要被替换的文件(比如.c、.h),如果没给出文件名,将从标准输入读

例子:

Linux Shell 批量重命名的方法总览
1、删除所有的 .bak 后缀:
rename ‘s/.bak$//’ *.bak

2、把 .jpe 文件后缀修改为 .jpg:
rename ‘s/.jpe$/.jpg/’ *.jpe

3、把所有文件的文件名改为小写:
rename ‘y/A-Z/a-z/’ *

4、将 abcd.jpg 重命名为 abcd_efg.jpg:
for var in *.jpg; do mv “ var"" {var%.jpg}_efg.jpg”; done

5、将 abcd_efg.jpg 重命名为 abcd_lmn.jpg:
for var in *.jpg; do mv “ var"" {var%_efg.jpg}_lmn.jpg”; done

6、把文件名中所有小写字母改为大写字母:
for var in ls; do mv -f “$var” echo "$var" |tr a-z A-Z; done

7、把格式 *_?.jpg 的文件改为 *_0?.jpg:
for var in ls *_?.jpg; do mv “$var” echo "$var" |awk -F '_' '{print $1 "_0" $2}'; done

8、把文件名的前三个字母变为 vzomik:
for var in ls; do mv -f “$var” echo "$var" |sed 's/^.../vzomik/'; done

9、把文件名的后四个字母变为 vzomik:
for var in ls; do mv -f “$var” echo "$var" |sed 's/....$/vzomik/'; done

参考:

http://blog.sina.com.cn/s/blog_63fd1bdb01013lv6.html
http://www.linuxidc.com/Linux/2016-11/137041.htm

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linuxrename命令可以用来批量命名文件或目录。它支持正则表达式,可以方便地对文件名进行批量修改。使用rename命令时,需要指定要修改的文件名规则和新的文件名规则。例如,将所有以.txt结尾的文件名中的"old"替换为"new",可以使用以下命令: rename 's/old/new/' *.txt 这个命令会将所有以.txt结尾的文件名中的"old"替换为"new"。如果要修改目录名,可以使用以下命令: rename 's/old/new/' */ 这个命令会将所有目录名中的"old"替换为"new"。需要注意的是,rename命令只能修改文件名或目录名,不能修改文件内容。 ### 回答2: Linux命名一组文件通常可以使用mv命令进行,但是如果要批量进行命名,则可以使用linux rename命令。rename命令是linux系统下的一种强大的批量命名工具,支持使用正则表达式和通配符来指定文件名的模式,并使用单词、数字、时间等等方式来自动生成新的文件名。 在linux系统中使用rename命令进行批量命名时,需要遵循一定的格式和参数规则。例如,要将当前目录下的所有以“.html”结尾的文件的文件名中的“.html”字符串替换为“.php”,可以使用以下命令: rename 's/\.html$/\.php/' *.html 其中,“rename”是命令名称,“s/\.html$/\.php/”是正则表达式,表示以“.html”结尾的字符串将被替换为“.php”,“*.html”表示匹配所有以“.html”结尾的文件名。 除了替换字符串外,rename命令还可以使用其他类型的模式进行批量命名,例如使用单词、数字、时间等方式自动生成新的文件名。例如,要将当前目录下的所有文件名后添加一个当前日期的后缀名,可以使用以下命令: rename 'use DateTime; my $dt = DateTime->now->ymd(""); s/$/.${dt}/' * 其中“use DateTime”,表示使用DateTime模块,“my $dt = DateTime->now->ymd("");”表示获取当前日期,“s/$/.${dt}/'”表示在文件名后添加一个“.${dt}”后缀名,“*”表示匹配所有文件名。 总之,linux rename命令是一种非常强大的批量命名工具,可以大大提高文件命名的效率和准确性,尤其适用于需要对一大批文件进行命名规范化的情况。 ### 回答3: Linux系统中,经常遇到批量命名文件的情况。在该情况下,可以使用 Linuxrename 命令来批量命名文件。 Rename 命令是 Linux 系统中一个非常强大的命令,可以对文件和目录进行批量命名。该命令支持多种模式匹配,包括正则表达式等,非常方便灵活。 下面介绍一些使用 rename 命令进行批量命名的常见方法: 1. 替换文件名中的字符串 假如我们需要将文件夹中所有文件名中的“old”替换为“new”,则可以使用如下命令: rename 's/old/new/' * 其中,s表示替换,old表示被替换的字符串,new表示替换后的字符串,最后的 * 表示针对所有文件进行替换。 2. 给文件名添加前缀或后缀 假如我们需要将文件夹中所有文件名添加前缀“prefix_”,则可以使用如下命令: rename 's/^/prefix_/' * 其中,^表示匹配到文件名的开头,添加 prefix_ 到文件名开头。 类似地,若要将文件名添加后缀“_suffix”,则可以使用以下命令: rename 's/$/_suffix/' * 其中,$表示匹配到文件名的结尾,添加 _suffix 到文件名末尾。 3. 批量删除指定字符 假如我们需要将文件夹中指定字符 “123” 从文件名中删除,可以使用如下命令: rename 's/123//' * 其中,// 表示删除匹配到的字符。 总体而言,Linux rename 命令非常强大,可用于进行多种批量命名任务。需要注意的是,在使用 rename 命令进行批量命名时,一定要先仔细确定正则表达式和替换字符串,以避免误操作引起的意外结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值