Fedora命令:终于弄明白了rename的用法了

今天在学习rm命令的时候,提到rm也有重命名文件和目录的功能,同时,还有一个专门用于重命名的命令,即rename。

可是,貌似这个命令不是很常用。我man了一下rename,这里是手册的内容:

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

 

NAME

       rename - Rename files

 

SYNOPSIS

       rename from to file...

       rename -V

 

DESCRIPTION

       rename  will  rename  the specified files by replacing the first occur-

       rence of from in their name by to.

 

       -V, --version

              Display version information and exit.

 

       For example, given the files

              foo1, ..., foo9, foo10, ..., foo278, the commands

 

              rename foo foo0 foo?

              rename foo foo0 foo??

 

       will turn them into foo001, ..., foo009, foo010, ..., foo278.

 

       And

              rename .htm .html *.htm

 

       will fix the extension of your html files.

可能是自己英语理解能力很不够吧,上面的描述部分愣是没看懂,而且下边的举例也没看明白。后来,在网上搜索了一下,琢磨半天,才终于是彻底明白了rename的基本用法了。
rename语法:rename from to files     注意rename需要三个参数,而不是两个
解释:就是将文件files中第一次出现的from全部替换成to。即from是files文件名的一部分,将该部分全部替换成to。对照着上面英文部分的描述,还确实是那么回事,所以只能怪自己英语水平不够了!
man里的例子说明(rename命令结合通配符?可以批量重命名文件):
假如有文件foo1,...,foo9,...,foo278
输入命令:#rename foo foo0 foo?
因为?只能通配单个字符,所以只有foo1,...foo9被重命名为foo01,...foo09
输入命令:#rename foo foo0 foo??
两个??则可以通配两个字符,所以文件名会发生如下变化:foo001,...,foo009,foo010,...,foo099
当然还是可以继续增加通配符?的个数,规律和上面是一样的。
还有两种通配符,即*和charset,举例说明如下:
输入:#rename foo foo0 foo*
则所以以foo开头的文件都被重命名了:foo01,...,foo09,...,foo010,...foo0278
输入:#rename foo0 foo foo0[2]*
则所有以foo02开头的文件,其中的foo0被替换成了foo。
以上主要是批量重命名,那么对于单个文件的命名就很容易想到了,即如第一个参数和最后一个参数完全相同,就可以将文件名重命名第二个参数了。
如:#rename filename newname filename
这里要注意:linux的文件名都是带扩展名的,即后缀,所以,重命名时一定要写出文件的完整名,包括进后缀。如:
当前目录下有一个文件test.txt:
输入:#rename test.txt test2.txt test.txt
这是就将test.txt重命名为test2.txt
如果输入:#rename test.txt test.doc test.txt
就将原文件修改成了test2.doc,所以这时一定要多加注意!
 
附:mv命令的移动功能和重命名功能:
使用了几次mv命令后,发现对mv的移动和重命名的功能有些混淆不清了,尝试几次后,总结出:
#mv source dest
1.如果source是文件:
(a)dest也是文件,那肯定是重命名,将source重命名为dest
(3)dest是目录,则是移动,将source移动到dest目录中
2.如果source是目录,那么dest必须是目录:
(a)如果dest目录存在,则是移动,将source整个目录移动到dest目录下
(b)如果dest目录不存在,则是重命名,即将source目录重命名为dest目录。
这些是我自己尝试并总结出来的,也许并不完善或有错误,请大家不吝纠错呵完善,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值