Linux 重命名命令 rename 和 mv 详解

刚学linux时,对文件重命名脑袋里立马呈现了rename命令,但却用不起来。G了一下,仍是一知半解,而且发现很多人对它也是很陌生!还有部分童鞋说直接使用mv,哎,mv还真管用,但老感觉命令名咋就那么不顺眼呢!

我们来man下吧,先man mv:

mv - move (rename) files

mv不仅有转移的功能,确实有重命名的含义,语法简单可理解为:

mv [path/]oldfilename [path/]newfilename

但只能是重名为当个文件。

我们再来man rename:

rename - renames multiple files

可以看出rename命令是专用于文件重命名的,而且是对批量文件重命名。

Linux的 rename版本

Linux的 rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Linux发行版基本上使用的是C语言版本的,现在已经很难见到C语言版本的了, 由于历史原因,在Perl语言大红大紫的时候,Linux的工具开发者们信仰Perl能取代C,所以大部分工具原来是C版本的都被Perl改写了,因为 Perl版本的支持正则处理,所以功能更加强大,已经不再需要C语言版本的了。

如何区分系统里的rename命令是哪个版本的?

输入 man rename 看到第一行是

RENAME(1) Linux Programmer’s Manual RENAME(1)

那么 这个就是C语言版本的。而如果出现的是:

RENAME(1)              Perl Programmers Reference Guide              RENAME(1)

这个就是Perl版本的了!

两个版本的语法差异

  1. C语言的,按照man上面的注解,rename的语法格式是:

    rename fromtofile

    d这个命令有三个参数,分别是 from : 修改什么名字, to:改成什么名字, file 需要修改的文件是哪些。

    用法示例:比如,有一批文件,都是以 log开头的, log001.txt,  log002.txt ....... 一直到 log100.txt,现在想要把这批文件的log全部替换为 history

    rename  log history log*

    这句命令的意思很明白了,把 以 log开头的所有文件中的 log字符替换为 history,这样替换后的文件是: history001.txt,  history002.txt ..... 一直到 history100.txt。

  2. Perl 版本的批量重命名,带有Perl的好处是,你可以使用正则表达式来完成很奇特的功能。perl 版本的参数格式:
    rename  perlexpr files

    man rename的帮助示例:有一批文件,以 .bak结尾,现在想把这些 .bak 统统去掉:

    rename     ‘s/\.bak$//‘        *.bak

    这个命令很简单,因为我还没有系统学习过perl,我不知道perl里替换字符串是不是这么干的,但sed是这么干的,所以如果你有sed或者tr基础,很容易明白,这个替换和sed里的正则语法是一模一样的。

总结:所以如果你只是重名一个文件,那么还是mv方便快捷!

时间: 2024-10-03 22:47:43

Linux 重命名命令 rename 和 mv 详解的相关文章

转:Linux中find命令-path -prune用法详解

在Windows中可以在某些路径中查找文件,也可以设定不在某些路径中查找文件,下面用Linux中的find的命令结合其-path -prune参数来看看在Linux中怎么实现此功能. 假如在当前目录下查找文件,且当前目录下有很多文件及目录(多层目录),包括dir0.dir1和dir2 ...等目录及dir00.dir01...dir10.dir11...等子目录. 1. 在当前目录下查找所有txt后缀文件 find ./ -name *.txt 2.在当前目录下的dir0目录及子目录下查找txt

linux下iptables命令的应用与详解

一.iptables的规则表和链. 表(tables)提供特定的功能,iptables内置了4个表,即filter表.nat表.mangle表和raw表,分别用于实现包过滤,网络地址转换.包重构(修改)和数据跟踪处理.   链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一 条或数条规则.当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件.如果满足,系统就会根据 该条规则所定义的方法处理该数据

Linux中find命令-path -prune用法详解

摘自:http://www.cnblogs.com/hopeworld/archive/2011/04/08/2009252.html 在Windows中可以在某些路径中查找文件,也可以设定不在某些路径中查找文件,下面用Linux中的find的命令结合其-path -prune参数来看看在Linux中怎么实现此功能. 假如在当前目录下查找文件,且当前目录下有很多文件及目录(多层目录),包括dir0.dir1和dir2 ...等目录及dir00.dir01...dir10.dir11...等子目录

Linux文件查找命令find和xargs详解

PS:find是个很强大的命令,能够匹配正则,查找对应权限,能够帮你精确的定位你的系统中的任何地方任何目录下的文件.下面这篇是关于find命令用法最详细的一篇了,记录下.还有要注意的:本文的分号:其实都是带转义字符的\:,可能是本博的模板问题,后台显示但前台没显示出来.对于不同的系统,直接使用分号可能会有不同的意义,使用转义符\在分号前明确说明. 目录 版权声明 前言:关于find命令 一.find 命令格式1.find命令的一般形式为:2.find命令的参数:3.find命令选项:4.使用ex

【命令cp】linux cp复制命令参数及用法详解

cp (复制档案或目录)[[email protected] ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)[[email protected] ~]# cp [options] source1 source2 source3 -. directory参数:-a :相当于 -pdr 的意思:-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身:-f :为强制 (force) 的意思,若有重复或其它疑问时,不会询

linux 下rpm命令参数使用方法详解

RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:在Fedora .Redhat.Mandriva.SuSE.YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用: 一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系:也就是安装一个rpm包需要的so动态链接库(也称为共享库)的环境.其实就和人的生存环境一样

Linux下rar 命令压缩和解压详解

例1:添加文件或目录到压缩档案中,使用a命令.例如把文件files1添加到abc.rar中,使用a或m命令,a命令把file1文件添加到abc.rar档案中保持原有的file1文件不变,m命令移动file1文件到file1.rar档案中(压缩完成后会删除原有的file1文件,注意:m命令只针对文件进行操作)$rar a abc.rar file1 说明:如果此时abc.rar档案不存在,会自行创建abc.rar文档案,如果abc.rar档案已经存在,则将file1文件压缩进abc.rar档案中,

linux 文件、文件夹的重命名命令

linux中没有重命名命令,一般用mv替代.如将test更名为testsmv test tests隐藏是mv test .test 说到文件的隐藏,linux下文件如果想隐藏起来只要重命名这个文件就可以了,即把文件名的前面加一个点,反之如果去掉点就是去隐藏.因为Linux下以点开头的文件就是隐藏文件.

mysql 命令重命名表RENAME TABLE 句法

mysql 命令重命名表RENAME TABLE 句法 RENAME TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2,...]更名是以原子方式(atomically)执行,这就意味着,当更名正在运行时,其它的任何线程均不能该表.这使得以一个空表替换一个表成为可能. CREATE TABLE new_table (...);RENAME TABLE old_table TO backup_table, new_table TO