草庐IT

Linux基本功系列之rename命令实战

我是沐风晓月 2023-08-14 原文

文章目录

前言🚀🚀🚀
想要学好Linux,命令是基本功,企业中常用的命令大约200多个,不管是写shell脚本还是管理操作系统,最常用的命令必须要牢牢掌握,像我们以前学乘法口诀一样,烂熟于心,唯有如此,才能打牢基础。
💓 知识最重要的是记忆
💓 入门须知: 想要人生从容,必须全力以赴,努力才是你最终的入场券🚀🚀🚀
💕 最后: 努力成长自己,愿我们都能在看不到的地方闪闪发光 ,一起加油进步🍺🍺🍺

一. rename 命令介绍

rename命令的功能是用于批量修改文件名称。与mv命令一次只能修改一个文件名不同,rename命令能够基于正则表达式对文件名进行批量修改,但要求是把匹配规则准确的描述给系统。
rename命令的参数有三项:
其一是当前文件名中要被修改的字符;
其二是其要被修改为的新字符;
其三是要被执行的对象文件列表

二. 语法格式及常用选项

常用的命令格式:

rename [选项] 表达式 替换文件…

rename [options] expression replacement file…

expression 将文件名需要替换的字符串

replacement 将文件名中含有的原字符替换成目标字符串

file 指定要改变文件名的文件列表

我们可以使用 --help查看常用的选项


 [root@mufenggrow a]# rename --help

用法:
 rename [选项] 表达式 替换文件...

选项:
 -v, --verbose    解释正在进行的操作
 -s, --symlink    在符号链接上执行

 -h, --help     显示此帮助并退出
 -V, --version  输出版本信息并退出

常用的正则表达式符号说明:

^  匹配输入的开始位置
$ 匹配输入的结尾
.  表示匹配除换行字符外的任意字符
+ 匹配起哪一个字符一次或者多次
[a-z] 匹配a与z之间的任意一个小写字母
[^m-z] 不与指定区域内的字符匹配
? 可替代单个字符
* 可以替代多个字符
[charset] 可替代charset集中的任意单字符

三. 参考案例

3.1 将当前目录下所有.cfg的文件,替换为.txt结尾

创建目录test,在text下创建文件 {1…5}.cfg ,全部替换为 ,txt结尾:
我们来看演示效果:

[root@mufenggrow ~]# mkdir test
[root@mufenggrow ~]# cd test
[root@mufenggrow test]# touch {1..5}.cfg
[root@mufenggrow test]# ll
总用量 0
-rw-r--r--. 1 root root 0 122 20:00 1.cfg
-rw-r--r--. 1 root root 0 122 20:00 2.cfg
-rw-r--r--. 1 root root 0 122 20:00 3.cfg
-rw-r--r--. 1 root root 0 122 20:00 4.cfg
-rw-r--r--. 1 root root 0 122 20:00 5.cfg
[root@mufenggrow test]# rename .cfg .txt *.cfg
[root@mufenggrow test]# ll
总用量 0
-rw-r--r--. 1 root root 0 122 20:00 1.txt
-rw-r--r--. 1 root root 0 122 20:00 2.txt
-rw-r--r--. 1 root root 0 122 20:00 3.txt
-rw-r--r--. 1 root root 0 122 20:00 4.txt
-rw-r--r--. 1 root root 0 122 20:00 5.txt
[root@mufenggrow test]# 

我们用图示来标注下:

根据上图中的位置,我们再来看一个例子:
接下来我们把1.txt 改为1.doc ,这里和mv是有很多区别的:

[root@mufenggrow test]# ll
总用量 0
-rw-r--r--. 1 root root 0 122 20:00 1.txt
-rw-r--r--. 1 root root 0 122 20:00 2.txt
-rw-r--r--. 1 root root 0 122 20:00 3.txt

[root@mufenggrow test]# rename 1.txt 1.doc 1.txt
[root@mufenggrow test]# ll 1.doc 
-rw-r--r--. 1 root root 0 122 20:00 1.doc
[root@mufenggrow test]# 

3.2 将所有出现mufeng的部分都替换为mufeng1

我们先创建mufeng1-5, 然后将mufeng改为mufeng0
以下是代码示例:

[root@mufenggrow test]# touch mufeng{1..5}
[root@mufenggrow test]# ls
mufeng1  mufeng2  mufeng3  mufeng4  mufeng5
[root@mufenggrow test]# rename mufeng mufeng0 mufeng?
[root@mufenggrow test]# ll
总用量 0
-rw-r--r--. 1 root root 0 122 20:14 mufeng01
-rw-r--r--. 1 root root 0 122 20:14 mufeng02
-rw-r--r--. 1 root root 0 122 20:14 mufeng03
-rw-r--r--. 1 root root 0 122 20:14 mufeng04
-rw-r--r--. 1 root root 0 122 20:14 mufeng05

通过代码示例可以看到,所有的用户都变成了mufeng0开头了

3.3 将mufeng0开头都变成mufeng00开头

先查看目前的文件:

[root@mufenggrow test]# ll
总用量 0
-rw-r--r--. 1 root root 0 122 20:14 mufeng01
-rw-r--r--. 1 root root 0 122 20:14 mufeng02
-rw-r--r--. 1 root root 0 122 20:14 mufeng03
-rw-r--r--. 1 root root 0 122 20:14 mufeng04
-rw-r--r--. 1 root root 0 122 20:14 mufeng05


将mufeng0冲命名为mufeng00开头

[root@mufenggrow test]# rename mufeng mufeng0 mufeng*
[root@mufenggrow test]# ll
总用量 0
-rw-r--r--. 1 root root 0 122 20:14 mufeng001
-rw-r--r--. 1 root root 0 122 20:14 mufeng002
-rw-r--r--. 1 root root 0 122 20:14 mufeng003
-rw-r--r--. 1 root root 0 122 20:14 mufeng004
-rw-r--r--. 1 root root 0 122 20:14 mufeng005

原来是mufeng0开头,又加了个0,所以变成了00开头。

3.4 rename支持正则表示式

将mufeng替换为MUfeng
rename的替换,可以使用类似vim文本中的替换,比如 s/mu/MU/

[root@mufenggrow test]# ll
总用量 0
-rw-r--r--. 1 root root 0 122 20:14 mufeng001
-rw-r--r--. 1 root root 0 122 20:14 mufeng002
-rw-r--r--. 1 root root 0 122 20:14 mufeng003
-rw-r--r--. 1 root root 0 122 20:14 mufeng004
-rw-r--r--. 1 root root 0 122 20:14 mufeng005
[root@mufenggrow test]# rename "s/mu/MU/" *
[root@mufenggrow test]# ll
总用量 0
-rw-r--r--. 1 root root 0 122 20:14 mufeng001
-rw-r--r--. 1 root root 0 122 20:14 mufeng002
-rw-r--r--. 1 root root 0 122 20:14 mufeng003
-rw-r--r--. 1 root root 0 122 20:14 mufeng004
-rw-r--r--. 1 root root 0 122 20:14 mufeng005
[root@mufenggrow test]# 

将后缀.txt 全部替换为.php

[root@mufenggrow test]# rename  .txt .php *
[root@mufenggrow test]# ll
总用量 0
-rw-r--r--. 1 root root 0 122 20:23 1.php
-rw-r--r--. 1 root root 0 122 20:23 2.php
-rw-r--r--. 1 root root 0 122 20:23 3.php
-rw-r--r--. 1 root root 0 122 20:23 4.php
-rw-r--r--. 1 root root 0 122 20:23 5.php

总结

以上就是rename命令的使用,涉及到批量改名的时候,我们会用到rename,有时候也可以用shell脚本来实现,各种方法都可以尝试。

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

有关Linux基本功系列之rename命令实战的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  3. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  4. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  5. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  6. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  7. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  8. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  9. 阿里云RDS——产品系列概述 - 2

    基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于

  10. ruby-on-rails - 使用 HTTParty 的非常基本的 Rails 4.1 API 调用 - 2

    Rails相对较新。我正在尝试调用一个API,它应该向我返回一个唯一的URL。我的应用程序中捆绑了HTTParty。我已经创建了一个UniqueNumberController,并且我已经阅读了几个HTTParty指南,直到我想要什么,但也许我只是有点迷路,真的不知道该怎么做。基本上,我需要做的就是调用API,获取它返回的URL,然后将该URL插入到用户的数据库中。谁能给我指出正确的方向或与我分享一些代码? 最佳答案 假设API为JSON格式并返回如下数据:{"url":"http://example.com/unique-url"

随机推荐