在linux下修改文件的名字有很多种方法,常用的有mv和rename。

一,mv

mv fromfile tofile

如把文件a.txt得命名为b.txt,可以是mv a.txt b.txt。

mv一次只能重命名一个文件,而且,它是移动命令。如果tofile已经存在的话,会直接装原文件覆盖,从而造成文件的丢失。当然有选项可以对已存在的文件进行提示,还是决定看看rename吧。

例子:将目录A重命名为B

mv A B

例子:将/a目录移动到/b下,并重命名为c

mv /a /b/c

二,rename

   Linux的 rename 命令有两个版本(C语言和Perl语言),早期的Linux发行版基本上使用的是C语言版本,现在系统几乎都是Perl语言版本了(支持正则处理,功能更强大)[1]。可以通过命令man rename打开rename帮助文档查看版本,如果第一行内容如下,则是Perl语言版本。
  1. RENAME(1)     Perl Programmers Reference Guide              RENAME(1)
   鉴于Perl语言版本是主流,本文只介绍该版本下rename的用法。Perl语言版本的rename命令格式如下:
  1. rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
-v(verbose)打印被成功重命名的文件
-n(no-act)只是显示将被重命名的文件,而不重命名(重命名之前可以用-n确认需要重命名的文件)
-f(force)覆盖已经存在的文件
perlexprPerl语言格式的正则表达式
files需要被替换的文件(比如*.c、*.h),如果没给出文件名,将从标准输入读
  先举个例子来感受下,比如将当前目录下所有*.nc文件名称中Sam3字串替换成Stm32,命令如下:
  1. rename -n 's/Sam3/Stm32/' *.nc  /*确认需要重命名的文件*/
  2. rename -v 's/Sam3/Stm32/' *.nc  /*执行修改,并列出已重命名的文件*/
  整个命令的重点在于Perl语言正则表达式,下一部分将予以较详细的介绍。

perlexpr参数介绍:Perl正则表达式——三种形式

匹配:m/<regexp>/  (可以省略m,直接写成/regexp/)
替换:s/<pattern>/<replacement>/ 
转化:tr/<pattern>/<replacement>/ 

  rename命令常用到替换和转化两种(用匹配也没意义)。转换跟替换不同,替换是将replacement整个字符串替换pattern字符串,而转换则是用replacement逐个字符替换pattern逐个字符,结果依赖于replacement与pattern字符个数(见下述分析)。

(1)替换
替换表达方式如下[3],还有一系列参数,貌似不怎么用得着。
  1. s/PATTERN/REPLACEMENT/egimosx
eEvaluate the right side as an expression.
gMatch globally, i.e. all occurrences.
iCase-insensitive pattern matching.
mTreat string as multiple lines.
oOnly compile pattern once, even if variables within it change.
sTreat string as single line.
xUse extended regular expressions
(2)转化
转化有两种等价表达方式,如下:
  1. tr/SEARCHLIST/REPLACEMENTLIST/cds
  2. y/SEARCHLIST/REPLACEMENTLIST/cds
cComplement the SEARCHLIST.
dDelete found but unreplaced characters.
sSquash duplicate replaced characters.
  转化同替换不同,用REPLACEMENTLIST逐个字符替换SEARCHLIST逐个字符,比如'tr/Sam/Stm/',用S替代S,t替代a,m替代m。结果依赖于两者字符长短,下面以文件名FastSpiSam3C.nc为例进行说明:
  1. jelline@jelline:~$ rename -n 'tr/Sam3/Stm/' FastSpiSam3C.nc /*替换字符短,用最后一个字符m替换3*/
  2. FastSpiSam3C.nc renamed as FtstSpiStmmC.nc
  3. jelline@jelline:~$ rename -n 'tr/Sam3/Stm32/' FastSpiSam3C.nc /*替换字符长,多出字符被忽略*/
  4. FastSpiSam3C.nc renamed as FtstSpiStm3C.nc

[ files ]参数介绍:支持通配符——三种

?    可替代单个字符

*    可替代多个字符

[charset]    可替代charset集中的任意单个字符

使用通配符即可对所有符合条件的文件名进行批量修改。
实例
将所有*.nc文件中Sam3替换成Stm32
  1. rename -v 's/Sam3/Stm32/' *.nc  /*执行修改,并列出已重命名的文件*/
2 去掉文件后缀名(比如去掉.bak)
  1. rename 's/\.bak$//' *.bak
3 将文件名改为小写
  1. rename 'y/A-Z/a-z/' *
4 去掉文件名的空格
  1. rename 's/[ ]+//g' *
5 文件开头加入字符串(比如jelline)
  1. rename 's/^/jelline/' *
6 文件末尾加入字符串(比如jelline)
  1. rename 's/$/jelline/' *
转载参考:
http://blog.csdn.net/zhaoweixing1989/article/details/8954452

http://blog.chinaunix.net/uid-28458801-id-4205443.html

Ubuntu下重命名文件相关推荐

  1. Ubuntu下重命名硬盘以及修改权限

    Ubuntu下重命名硬盘以及修改权限 查看电脑上所有硬盘分区的卷标及uuid, sudo blkid john@john-YangTianT4900k-09:~$ sudo blkid [sudo] ...

  2. linux下重命名文件

    linux下重命名文件有两种方式: 1.较简单的处理命令:mv mv 原文件名 新文件名 如:mv myFile newName 将MyFile重命名为newName. 2.linux提供了一个重命名 ...

  3. Linux下重命名文件或文件夹

    文章目录 Linux下重命名文件或文件夹 Linux下重命名文件或文件夹 在Linux下重命名文件或目录,可以使用mv命令或rename命令,这里分享下二者的使用方法. mv命令既可以重命名,又可以移 ...

  4. ubuntu批量重命名文件

    使用rename命令批量重命名文件 先看这个例子,将所有.nc文件中的x1替换成x2 rename -n 's/x1/x2/' *.nc # confirm the files you need to ...

  5. Linux重命名文件和文件夹

    Linux重命名文件和文件夹 1.mv linux下重命名文件或文件夹的命令mv即可以重命名, 又可以移动文件或文件夹.例子:将目录A重命名为Bmv A B将/a目录移动到/b下,并重命名为cmv / ...

  6. linux用shell重命名文件,Linux shell - 重命名文件和文件夹(mv)

    如何在Linux下重命名多个文件 在Linux中,当你想要改变一个文件名,使用mv命令就好了.然而mv不能使用通配符重命名多个文件.可以用sed.awk或者与xargs结合使用来处理多个文件的情况.然 ...

  7. 【linux基础】重命名文件和文件夹

    linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹. 例子:将目录A重命名为B mv A B 例子:将/a目录移动到/b下,并重命名为c mv /a /b/c 其实在文本模式 ...

  8. Linux shell - 重命名文件和文件夹(mv)

    linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹. 例子:将目录A重命名为B mv A B 例子:将/a目录移动到/b下,并重命名为c mv /a /b/c 转载于:htt ...

  9. Linux CentOS删除或重命名文件夹和文件的办法

    Linux.CentOS操作系统下如何删除和重命名文件夹呢?办法如下: 一.Linux.CentOS下重命名文件和文件夹 mv:move 用移动文件命令就可以了,因为linux系统没有专门的重命名命令 ...

最新文章

  1. 【错误记录】Windows 系统 bat 脚本报错 ( Java 生成 bat 脚本乱码处理 | 输出 GB2312 字符串 | Windows 中的换行时 \r\n )
  2. 学会这几个公式技巧,瞬间你就是高手
  3. 2017苏州太湖国际马拉松 半程成绩单
  4. javaSE基础之记事本编程
  5. 微服务调用组件Feign:简介以及搭建环境
  6. java编译生成哪些文件_java编译后生成什么文件?生成的文件包括什么?
  7. HDU1166 (线段树/修改点,询问区间)
  8. vscode使用Git Graph提交成功,但是仓库没有更新
  9. vue阿里云点播播放器
  10. inno setup 初次使用
  11. MySQL高级-04-授课笔记
  12. 频率单位转换 hz cpd cph
  13. source insight 4.0 闪退问题
  14. 全新2022强大的趣味心理测试小程序源码,趣味测试引流裂变神器,流量主激励广告实现管道收益
  15. 区块链论语:付币看真相是一个应用
  16. 大数乘法运算(C语言)
  17. OpenGL教程翻译 第二十三课 阴影贴图(一)
  18. 如何比较两个json
  19. android动画示例
  20. 步进电机 HD6600驱动器 附arduino教程

热门文章

  1. Matlab基于人工鱼群算法求解TSP问题
  2. 电商项目 全部操作流程
  3. Spark范例:统计CSDN不同邮箱的密码白痴指数
  4. (15)腾讯云微搭:云开发为底层支撑的低代码应用/表单开发平台
  5. linux kylin使用手册,优麒麟Ubuntu Kylin 18.10中的生物识别管理工具,附使用方法
  6. fu811电子管参数_常用电子管参数
  7. 阿里云 gradle maven配置中心地址
  8. 解决uni-app在开发环境中H5端的跨域问题
  9. mysql 存储过程,循环插入每天日期
  10. php 递归到空如何处理,PHP递归函数返回NULL - Carbon PHP库