[原]Linux下的rename命令

原贴:http://www.linuxfly.org/post/300/5

[原]Linux下的rename命令

linuxing , 16:28 , 网络服务 » 虚拟机 , 评论(0) , 引用(0) , 阅读(61) , Via 本站原创 大 | 中 | 小

引用地址: 注意: 该地址仅在今日23:59:59之前有效

Dos/Windows下,对文件改名用rename。而书上说,Linux下对文件或目录改名该用mv。我一直也是这样做的,却忽略了Linux下也有个叫rename的命令。都是rename,但功能上就有点差异了。Linux下的rename更像批量改名的工具,是util-linux套件中提供的。一、基本功能从mv和rename命令的man文档中,可以看到如下信息:

引用

mv – move (rename) filesrename – Rename files也就是说,mv也能用于改名,但不能实现批量处理(改名时,不支持*等符号的),而rename可以。rename使用的格式:

$ rename foo foo0 foo?rename需要提供三个参数,然后才能决定最终结果。模拟一下man文档的例子,原文件:

引用

$ for i in `seq 100`;do touch foo$i;done$ lsfoo1foo18foo27foo36foo45foo54foo63foo72foo81foo90foo10 foo19foo28foo37foo46foo55foo64foo73foo82foo91foo100foo2 foo29foo38foo47foo56foo65foo74foo83foo92foo11 foo20foo3 foo39foo48foo57foo66foo75foo84foo93foo12 foo21foo30foo4 foo49foo58foo67foo76foo85foo94foo13 foo22foo31foo40foo5 foo59foo68foo77foo86foo95foo14 foo23foo32foo41foo50foo6 foo69foo78foo87foo96foo15 foo24foo33foo42foo51foo60foo7 foo79foo88foo97foo16 foo25foo34foo43foo52foo61foo70foo8 foo89foo98foo17 foo26foo35foo44foo53foo62foo71foo80foo9 foo99改名结果:(红色是没有改动的,蓝色是有改动的一部分)

引用

$ rename foo foo0 foo?$ lsfoo01foo100foo20foo30foo40foo50foo60foo70foo80foo90foo02foo11 foo21foo31foo41foo51foo61foo71foo81foo91foo03foo12 foo22foo32foo42foo52foo62foo72foo82foo92foo04foo13 foo23foo33foo43foo53foo63foo73foo83foo93foo05foo14 foo24foo34foo44foo54foo64foo74foo84foo94foo06foo15 foo25foo35foo45foo55foo65foo75foo85foo95foo07foo16 foo26foo36foo46foo56foo66foo76foo86foo96foo08foo17 foo27foo37foo47foo57foo67foo77foo87foo97foo09foo18 foo28foo38foo48foo58foo68foo78foo88foo98foo10foo19 foo29foo39foo49foo59foo69foo79foo89foo99$ rename foo foo0 foo??$ lsfoo001foo011foo021foo031foo041foo051foo061foo071foo081foo091foo002foo012foo022foo032foo042foo052foo062foo072foo082foo092foo003foo013foo023foo033foo043foo053foo063foo073foo083foo093foo004foo014foo024foo034foo044foo054foo064foo074foo084foo094foo005foo015foo025foo035foo045foo055foo065foo075foo085foo095foo006foo016foo026foo036foo046foo056foo066foo076foo086foo096foo007foo017foo027foo037foo047foo057foo067foo077foo087foo097foo008foo018foo028foo038foo048foo058foo068foo078foo088foo098foo009foo019foo029foo039foo049foo059foo069foo079foo089foo099foo010foo020foo030foo040foo050foo060foo070foo080foo090foo100该例子给出了两种文件批量重命名的用法:

引用

第一个参数:被替换掉的字符串第二个参数:替换成的字符串第三个参数:匹配要替换的文件模式rename支持通配符,基本的通配符有以下几个:

引用

?可替代单个字符*可替代多个字符[charset]可替代charset集中的任意单个字符二、其他例子看看*的作用:

引用

$ rm -f *$ for i in `seq 100`;do touch foo$i;done$ rename foo foo0 foo*$ lsfoo01foo018foo027foo036foo045foo054foo063foo072foo081foo090foo010 foo019foo028foo037foo046foo055foo064foo073foo082foo091foo0100foo02 foo029foo038foo047foo056foo065foo074foo083foo092foo011 foo020foo03 foo039foo048foo057foo066foo075foo084foo093foo012 foo021foo030foo04 foo049foo058foo067foo076foo085foo094foo013 foo022foo031foo040foo05 foo059foo068foo077foo086foo095foo014 foo023foo032foo041foo050foo06 foo069foo078foo087foo096foo015 foo024foo033foo042foo051foo060foo07 foo079foo088foo097foo016 foo025foo034foo043foo052foo061foo070foo08 foo089foo098foo017 foo026foo035foo044foo053foo062foo071foo080foo09 foo099再看看[charset]的作用:

引用

$ rm -f *$ for i in `seq 100`;do touch foo$i;done$ rename foo foo0 foo[9]*$ lsfoo09 foo099foo17foo26foo35foo44foo53foo62foo71foo80foo090foo1foo18foo27foo36foo45foo54foo63foo72foo81foo091foo10 foo19foo28foo37foo46foo55foo64foo73foo82foo092foo100foo2 foo29foo38foo47foo56foo65foo74foo83foo093foo11 foo20foo3 foo39foo48foo57foo66foo75foo84foo094foo12 foo21foo30foo4 foo49foo58foo67foo76foo85foo095foo13 foo22foo31foo40foo5 foo59foo68foo77foo86foo096foo14 foo23foo32foo41foo50foo6 foo69foo78foo87foo097foo15 foo24foo33foo42foo51foo60foo7 foo79foo88foo098foo16 foo25foo34foo43foo52foo61foo70foo8 foo89不难理解吧,找环境测试一下就明白了。用rename可以减少部分写for循环的工作,还是比较方便的。

Tags: rename , mv 最好的节约是珍惜时间,最大的浪费是虚度年华。

[原]Linux下的rename命令

相关文章:

你感兴趣的文章:

标签云: