在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Dos/Windows下,对文件改名用rename。而书上说,Linux下对文件或目录改名该用mv。我一直也是这样做的,却忽略了Linux下也有个叫rename的命令。都是rename,但功能上就有点差异了。Linux下的rename更像批量改名的工具,是util-linux套件中提供的。 从mv和rename命令的man文档中,可以看到如下信息: 复制代码 代码如下:mv - move (rename) files rename - Rename files 也就是说,mv也能用于改名,但不能实现批量处理(改名时,不支持*等符号的),而rename可以。 rename使用的格式: 复制代码 代码如下:$ rename foo foo0 foo? rename需要提供三个参数,然后才能决定最终结果。 模拟一下man文档的例子,原文件: 复制代码 代码如下:$ for i in `seq 100`;do touch foo$i;done $ ls foo1 foo18 foo27 foo36 foo45 foo54 foo63 foo72 foo81 foo90 foo10 foo19 foo28 foo37 foo46 foo55 foo64 foo73 foo82 foo91 foo100 foo2 foo29 foo38 foo47 foo56 foo65 foo74 foo83 foo92 foo11 foo20 foo3 foo39 foo48 foo57 foo66 foo75 foo84 foo93 foo12 foo21 foo30 foo4 foo49 foo58 foo67 foo76 foo85 foo94 foo13 foo22 foo31 foo40 foo5 foo59 foo68 foo77 foo86 foo95 foo14 foo23 foo32 foo41 foo50 foo6 foo69 foo78 foo87 foo96 foo15 foo24 foo33 foo42 foo51 foo60 foo7 foo79 foo88 foo97 foo16 foo25 foo34 foo43 foo52 foo61 foo70 foo8 foo89 foo98 foo17 foo26 foo35 foo44 foo53 foo62 foo71 foo80 foo9 foo99 改名结果: 复制代码 代码如下:$ rename foo foo0 foo? $ ls foo01 foo100 foo20 foo30 foo40 foo50 foo60 foo70 foo80 foo90 foo02 foo11 foo21 foo31 foo41 foo51 foo61 foo71 foo81 foo91 foo03 foo12 foo22 foo32 foo42 foo52 foo62 foo72 foo82 foo92 foo04 foo13 foo23 foo33 foo43 foo53 foo63 foo73 foo83 foo93 foo05 foo14 foo24 foo34 foo44 foo54 foo64 foo74 foo84 foo94 foo06 foo15 foo25 foo35 foo45 foo55 foo65 foo75 foo85 foo95 foo07 foo16 foo26 foo36 foo46 foo56 foo66 foo76 foo86 foo96 foo08 foo17 foo27 foo37 foo47 foo57 foo67 foo77 foo87 foo97 foo09 foo18 foo28 foo38 foo48 foo58 foo68 foo78 foo88 foo98 foo10 foo19 foo29 foo39 foo49 foo59 foo69 foo79 foo89 foo99 复制代码 代码如下:$ rename foo foo0 foo?? $ ls foo001 foo011 foo021 foo031 foo041 foo051 foo061 foo071 foo081 foo091 foo002 foo012 foo022 foo032 foo042 foo052 foo062 foo072 foo082 foo092 foo003 foo013 foo023 foo033 foo043 foo053 foo063 foo073 foo083 foo093 foo004 foo014 foo024 foo034 foo044 foo054 foo064 foo074 foo084 foo094 foo005 foo015 foo025 foo035 foo045 foo055 foo065 foo075 foo085 foo095 foo006 foo016 foo026 foo036 foo046 foo056 foo066 foo076 foo086 foo096 foo007 foo017 foo027 foo037 foo047 foo057 foo067 foo077 foo087 foo097 foo008 foo018 foo028 foo038 foo048 foo058 foo068 foo078 foo088 foo098 foo009 foo019 foo029 foo039 foo049 foo059 foo069 foo079 foo089 foo099 foo010 foo020 foo030 foo040 foo050 foo060 foo070 foo080 foo090 foo100 该例子给出了两种文件批量重命名的用法: rename支持通配符,基本的通配符有以下几个: 看看*的作用: 再看看[charset]的作用: 复制代码 代码如下:$ rm -f * $ for i in `seq 100`;do touch foo$i;done $ rename foo foo0 foo[9]* $ ls foo09 foo099 foo17 foo26 foo35 foo44 foo53 foo62 foo71 foo80 Linux的rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,判断方法: C语言版本格式:rename 原字符串 新字符串 文件名 Perl语言版本格式:rename 's/原字符串/新字符串/' 文件名 复制代码 代码如下:find -name "a*" -print | while read name do echo $name rename 's/a/b/' $name done |
请发表评论