>要用单个命令重命名一组文件,请使用 rename 命令 。它需要使用正则表达式,并且可以在开始前告诉你会有什么更改 。
— Sandra Henry-stocker(作者)
几十年来,Linux 用户一直使用 mv 命令重命名文件 。它很简单,并且能做到你要做的 。但有时你需要重命名一大组文件 。在这种情况下,rename 命令可以使这个任务更容易 。它只需要一些正则表达式的技巧 。
与 mv 命令不同,rename 不允许你简单地指定旧名称和新名称 。相反,它使用类似于 Perl 中的正则表达式 。在下面的例子中,s 指定我们将第一个字符串替换为第二个字符串(旧的),从而将 this.new 变为 this.old 。
$ rename \'s/new/old/\' this.new$ ls this*this.old使用 mv this.new this.old 可以更容易地进行更改一个,但是将字符串 this 变成通配符 *,你可以用一条命令将所有的 *.new 文件重命名为 *.old:
$ ls *.newreport.new schedule.new stats.new this.new$ rename \'s/new/old/\' *.new$ ls *.oldreport.old schedule.old stats.old this.old正如你所料,rename 命令不限于更改文件扩展名 。如果你需要将名为 report.* 的文件更改为 review.*,那么可以使用以下命令做到:
$ rename \'s/report/review/\' *正则表达式中的字符串可以更改文件名的任何部分,无论是文件名还是扩展名 。
$ rename \'s/123/124/\' *$ ls *124*status.124 report124.txt如果你在 rename 命令中添加 -v 选项,那么该命令将提供一些反馈,以便你可以看到所做的更改,或许会包含你没注意的 。这让你注意到并按需还原更改 。
$ rename -v \'s/123/124/\' *status.123 renamed as status.124report123.txt renamed as report124.txt另一方面,使用 -n(或 –nono)选项会使 rename 命令告诉你将要做的但不会实际做的更改 。这可以让你免于执行不不想要的操作,然后再还原更改 。
$ rename -n \'s/old/save/\' *rename(logger.man-old, logger.man-save)rename(lyrics.txt-old, lyrics.txt-save)rename(olderfile-, saveerfile-)rename(oldfile, savefile)rename(review.old, review.save)rename(schedule.old, schedule.save)rename(stats.old, stats.save)rename(this.old, this.save)如果你对这些更改满意,那么就可以运行不带 -n 选项的命令来更改文件名 。
但请注意,正则表达式中的 . 不会被视为句点,而是作为匹配任何字符的通配符 。上面和下面的示例中的一些更改可能不是输入命令的人希望的 。
$ rename -n \'s/.old/.save/\' *rename(logger.man-old, logger.man.save)rename(lyrics.txt-old, lyrics.txt.save)rename(review.old, review.save)rename(schedule.old, schedule.save)rename(stats.old, stats.save)rename(this.old, this.save)为确保句点按照字面意思执行,请在它的前面加一个反斜杠 。这将使其不被解释为通配符并匹配任何字符 。请注意,进行此更改时,仅选择了 .old 文件 。
$ rename -n \'s/.old/.save/\' *rename(review.old, review.save)rename(schedule.old, schedule.save)rename(stats.old, stats.save)rename(this.old, this.save)下面的命令会将文件名中的所有大写字母更改为小写,除了使用 -n 选项来确保我们在命令执行之前检查将做的修改 。注意在正则表达式中使用了 y,这是改变大小写所必需的 。
$ rename -n \'y/A-Z/a-z/\' W*rename(WARNING_SIGN.pdf, warning_sign.pdf)rename(Will_Gardner_buttons.pdf, will_gardner_buttons.pdf)rename(Wingding_Invites.pdf, wingding_invites.pdf)rename(WOW-buttons.pdf, wow-buttons.pdf)
推荐阅读
- mac重装系统u盘制作 如何制作mac系统安装u盘
- linux查看防火墙是否开启某端口 linux查看防火墙是否开启命令
- 肠胃不消化该如何调理
- 要如何预防冬天变胖
- 冬天如何控制体重
- 冬天如何控制住体重
- 如何收割韭菜及收割技巧
- 抖音如何挣钱?9个利用抖音赚钱项目! 抖音上可以赚钱的项目有哪些
- 时间自由的副业有哪些 如何发展副业来挣钱
- 闲鱼如何提高曝光率呢 闲鱼如何提高曝光率和浏览量