加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

如何在 Linux 上重命名一组文件

发布时间:2019-09-03 18:41:03 所属栏目:建站 来源:Sandra Henry-stocker
导读:几十年来,Linux 用户一向行使 mv 呼吁重定名文件。它很简朴,而且能做到你要做的。但偶然你必要重定名一大组文件。在这种环境下,rename 呼吁可以使这个使命更轻易。它只必要一些正则表达式的能力。 与 mv 呼吁差异,rename 不应承你简朴地指定旧名称和新

几十年来,Linux 用户一向行使 mv 呼吁重定名文件。它很简朴,而且能做到你要做的。但偶然你必要重定名一大组文件。在这种环境下,rename 呼吁可以使这个使命更轻易。它只必要一些正则表达式的能力。

如安在 Linux 上重定名一组文件

与 mv 呼吁差异,rename 不应承你简朴地指定旧名称和新名称。相反,它行使相同于 Perl 中的正则表达式。在下面的例子中,s 指定我们将第一个字符串替代为第二个字符串(旧的),从而将 this.new 变为 this.old。

  1. $ rename 's/new/old/' this.new 
  2. $ ls this* 
  3. this.old 

行使 mv this.new this.old 可以更轻易地举办变动一个,可是将字符串 this 酿成通配符 *,你可以用一条呼吁将全部的 *.new 文件重定名为 *.old:

  1. $ ls *.new 
  2. report.new  schedule.new  stats.new  this.new 
  3. $ rename 's/new/old/' *.new 
  4. $ ls *.old 
  5. report.old  schedule.old  stats.old  this.old 

正如你所料,rename 呼吁不限于变动文件扩展名。假如你必要将名为 report.* 的文件变动为 review.*,那么可以行使以下呼吁做到:

  1. $ rename 's/report/review/' * 

正则表达式中的字符串可以变动文件名的任何部门,无论是文件名照旧扩展名。

  1. $ rename 's/123/124/' * 
  2. $ ls *124* 
  3. status.124  report124.txt 

假如你在 rename 呼吁中添加 -v 选项,那么该呼吁将提供一些反馈,以便你可以看到所做的变动,或者会包括你没留意的。这让你留意到并按需还原变动。

  1. $ rename -v 's/123/124/' * 
  2. status.123 renamed as status.124 
  3. report123.txt renamed as report124.txt 

另一方面,行使 -n(或 --nono)选项会使 rename 呼吁汇报你将要做的但不会现实做的变动。这可以让你免于执行不不想要的操纵,然后再还原变动。

  1. $ rename -n 's/old/save/' * 
  2. rename(logger.man-old, logger.man-save) 
  3. rename(lyrics.txt-old, lyrics.txt-save) 
  4. rename(olderfile-, saveerfile-) 
  5. rename(oldfile, savefile) 
  6. rename(review.old, review.save) 
  7. rename(schedule.old, schedule.save) 
  8. rename(stats.old, stats.save) 
  9. rename(this.old, this.save) 

假如你对这些变动满足,那么就可以运行不带 -n 选项的呼吁来变动文件名。

但请留意,正则表达式中的 . 不会被视为句点,而是作为匹配任何字符的通配符。上面和下面的示例中的一些变动也许不是输入呼吁的人但愿的。

  1. $ rename -n 's/.old/.save/' * 
  2. rename(logger.man-old, logger.man.save) 
  3. rename(lyrics.txt-old, lyrics.txt.save) 
  4. rename(review.old, review.save) 
  5. rename(schedule.old, schedule.save) 
  6. rename(stats.old, stats.save) 
  7. rename(this.old, this.save) 

为确保句点凭证字面意思执行,请在它的前面加一个反斜杠。这将使其不被表明为通配符并匹配任何字符。请留意,举办此变动时,仅选择了 .old 文件。

  1. $ rename -n 's/.old/.save/' * 
  2. rename(review.old, review.save) 
  3. rename(schedule.old, schedule.save) 
  4. rename(stats.old, stats.save) 
  5. rename(this.old, this.save) 

下面的呼吁会将文件名中的全部大写字母变动为小写,除了行使 -n 选项来确保我们在呼吁执行之前搜查将做的修改。留意在正则表达式中行使了 y,这是改变巨细写所必须的。

  1. $ rename -n 'y/A-Z/a-z/' W* 
  2. rename(WARNING_SIGN.pdf, warning_sign.pdf) 
  3. rename(Will_Gardner_buttons.pdf, will_gardner_buttons.pdf) 
  4. rename(Wingding_Invites.pdf, wingding_invites.pdf) 
  5. rename(WOW-buttons.pdf, wow-buttons.pdf) 

在上面的例子中,我们将全部大写字母变动为了小写,但这仅对以大写字母 W 开头的文件名。

总结

当你必要重定名大量文件时,rename 呼吁很是有效。请留意不要做比预期更多的变动。请记着,-n(可能 --nono)选项可以辅佐你停止耗时的错误。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读