求rename使用方法

sh/bash/dash/ksh/zsh等Shell脚本
头像
xyf
帖子: 2032
注册时间: 2007-05-05 23:59
来自: 嘉兴

Re: 求rename使用方法

#16

帖子 xyf » 2009-11-15 16:54

看鸟哥
ufraw中文(raw图像处理)  http://sites.google.com/site/ufrawzh/
Gimp影像处理 http://sites.google.com/site/gimpcn/
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 求rename使用方法

#17

帖子 tusooa » 2009-11-28 14:53

rename from to files ...
prename perlexpr files ...

代码: 全选

] ls -ld //
头像
lululau
帖子: 105
注册时间: 2007-05-28 11:17

Re: 求rename使用方法

#18

帖子 lululau » 2009-11-28 20:41

网上找到的rename的资料中所说的那个rename和ubuntu中的rename不一样
archangelwin
帖子: 74
注册时间: 2007-09-09 14:34

Re: 求rename使用方法

#19

帖子 archangelwin » 2009-12-07 17:10

:em20 这不是跟 mv差不多么? 我一般都是用mv重命名的说
Sigma.js
帖子: 8
注册时间: 2013-03-14 18:56
系统: ubuntu

Re: 求rename使用方法

#20

帖子 Sigma.js » 2013-03-25 13:10

我来抛砖做个不全面的解释:

如下实例,将当前文件夹中的goagent文件名词修改成带扩展名.sh的文件名:

sudo rename s/goagent/goagent.sh/ goagent

sudo:执行权限
rename:命令名
s:固定参数
goagent:要替换的内容,支持带正则表达式的写法
goagent.sh:替换成的内容
goagent:替换范围的描述,写成具体的文件,就只针对这个文件修改,如果带通配符,范围就是多个文件辣

man rename里有个例子:
For example, to rename all files matching "*.bak" to strip the extension, you might say
例如:把所有扩展名为.bak的文件的扩展名脱掉:

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

解析:
1.引号,s为格式
2.\.是正则表达式的语法,表示扩展名的那个点,只不过点符号在正则表达式里有另外的意义,带个斜杠\表示转意,转成原本的点符号的意义。
3.$是正则表达式里的符号,表示“结尾”
4.//之间是空的,表示把之前的‘.bak’替换成空,也就促成了删除扩展名的效果
5. *.bak是要替换的范围,*在window里叫通配符,正则里表示任意字符,这里表示文件名称任意,扩展名固定为bak的所有文件
回复