要用单个命令重命名一组文件,请使用 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)

在上面的例子中,我们将所有大写字母更改为了小写,但这仅对以大写字母 W 开头的文件名。

总结

当你需要重命名大量文件时,rename 命令非常有用。请注意不要做比预期更多的更改。请记住,-n(或者 --nono)选项可以帮助你避免耗时的错误。


via: https://www.networkworld.com/article/3433865/how-to-rename-a-group-of-files-on-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

?:还在看吗?

linux 文件重命名_如何在 Linux 上重命名一组文件 | Linux 中国相关推荐

  1. os 修改文件夹 名_如何在OS X中更改文件夹和应用程序图标

    os 修改文件夹 名 One of the best ways to customize your Mac and make it your own is to change your app and ...

  2. python读取大文件的坑_如何在Python中读取大文件的特定部分

    Given a large file (hundreds of MB) how would I use Python to quickly read the content between a spe ...

  3. 如何在GitHub上重命名存储库?

    本文翻译自:How do I rename a repository on GitHub? I wanted to rename one of my repositories on GitHub, b ...

  4. linux中文件重命名_如何在Linux中重命名文件?

    linux中文件重命名 This tutorial will walk you through the simple steps to rename a file in Linux. 本教程将引导您完 ...

  5. linux使用命令重命名_如何在Linux上使用重命名命令

    linux使用命令重命名 Fatmawati Achmad Zaenuri/Shutterstock.comFatmawati Achmad Zaenuri / Shutterstock.com Ge ...

  6. 在linux中的文件中查找_如何在Linux中查找文件

    在linux中的文件中查找 如果您是Windows用户或OSX的非超级用户,则可能使用GUI查找文件. 您可能还会发现界面有限,令人沮丧或两者兼而有之,并且学会了精于组织事物并记住文件的确切顺序. 您 ...

  7. linux使用find命令_如何在Linux中使用FIND

    linux使用find命令 在最近的Opensource.com文章中 ,刘易斯·考尔斯介绍了find命令. 在日常工具箱中, find是功能更强大,更灵活的命令行程序之一,因此值得花一些时间在上面. ...

  8. linux mint 图标主题_如何在 Linux Mint 中更换主题

    一直以来,使用 Cinnamon 桌面环境的 Linux Mint 都是一种卓越的体验.这也是为何我喜爱 Linux Mint的主要原因之一. -- It's Foss(作者) 一直以来,使用 Cin ...

  9. etcher制作mac启动盘_如何在Mac上创建和引导Linux USB驱动器

    长期以来,Linux一直是可引导闪存驱动器的代名词,无论是要解决您的主操作系统中的某种问题,还是尝试各种发行版. 如何在Mac上创建和引导Linux USB驱动器​www.macz.com 有几种方法 ...

最新文章

  1. 三招让你从求职者中脱颖而出(转)
  2. python 显示html_如何使用python在本地显示带有html表单的网...
  3. seaborn 常用画图
  4. 十年再出发!阿里云智能总裁张建锋演讲全记录
  5. py哪个函数可以返回输入的变量类型_[Python基础]二、pycharm,python变量
  6. 互联网寒冬来袭,有一家公司却逆流而上!
  7. 场强和电阻_电阻定律及其相关问题
  8. springMVC后台验证信息不显示的原因初探
  9. 如何观察JS的事件队列的执行划分
  10. 如何给企业选择一款ERP系统
  11. python generator与coroutine
  12. springboot集成rocketmq
  13. 学术英语阅读与写作3:introduction引言
  14. Linux——安装英伟达Nvidia驱动
  15. SQL server 2008 全代码
  16. 【Visual C++】游戏开发四十八 浅墨DirectX教程十六 三维地形系统的实现
  17. python计算多边形的面积并保留两位小数_Python计算任意多边形面积算法
  18. 全球海温数据NOAA Extended Reconstructed Sea Surface Temperature (SST) V5的时间解释
  19. HLS_2 数据精度处理
  20. 最小二乘支持向量机预测matlab实现,最小二乘支持向量机及其 Pre-computed Kernel 的 matlab 实现...

热门文章

  1. 定时任务 Scheduled quartz
  2. windows客户端性能测试之内存泄露检查工具umdh.exe
  3. 发布服务器 bugzilla, streber 数据库备份方案
  4. java 根据类路径获取类_Java类加载器
  5. 计算机重装系统后黑屏,电脑重装系统后开机黑屏怎么办
  6. 基于mxnet的Regression问题Kaggle比赛代码框架
  7. 【C语言进阶深度学习记录】十七 宏定义的使用与分析
  8. zookeeper思维导图
  9. Java中如何实现代理机制(JDK、CGLIB)
  10. Java类加载机制的理解