分页: 1 / 1

求一个非常初级的循环重命名shell命令

发表于 : 2012-04-29 10:46
lam2888
如下图:
DeepinScrot-5952.png
因为视频要放在手机中观看,如何保留视频名字前的排序号码,循环重命名去掉“韩国小子双节棍教学 ”字样?比如“01韩国小子双节棍教学 单棍01段.flv"改为”01单棍01段.flv"?
:em06

Re: 求一个非常初级的循环重命名shell命令

发表于 : 2012-04-29 11:37
cao627

代码: 全选

rename 's/([[:digit:]]+).*[[:space:]](.*\.flv)/$1$2/' *.flv

Re: 求一个非常初级的循环重命名shell命令

发表于 : 2012-04-29 12:09
lam2888
那如果是下图呢?
DeepinScrot-5847.png
比如“01奋斗龙暑期双节棍教学100课---第一课:腋下换手.flv"改为“01腋下换手.flv"?

Re: 求一个非常初级的循环重命名shell命令

发表于 : 2012-04-29 13:00
cao627

代码: 全选

rename 's/^([[:digit:]]+).*:(.*\.flv)/$1$2/' *.flv

代码: 全选

rename 's/原文件名/新文件名/' 要改名的文件
s/^([[:digit:]]+).*(.*\.flv)/$1$2/'


这里 ^([[:digit:]]+).*:(.*\.flv) 是一个正则表达式 表示这样一个抽象概念 : 以多个连续数字([[:digit:]]+)开头(^)后接任意字符(.*)直到(:)再接任意字符以.fly结束(.*\.flv)。

用这个一个抽象概念表示你要改名的原文件名,替换为$1$2
$1$2分别对应前面两括号中的内容。

Re: 求一个非常初级的循环重命名shell命令

发表于 : 2012-04-29 13:07
qq420100523
授人予鱼,不如授人予渔呀 :em05

Re: 求一个非常初级的循环重命名shell命令

发表于 : 2012-04-30 19:20
lam2888
cao627 写了:

代码: 全选

rename 's/^([[:digit:]]+).*:(.*\.flv)/$1$2/' *.flv

代码: 全选

rename 's/原文件名/新文件名/' 要改名的文件
s/^([[:digit:]]+).*(.*\.flv)/$1$2/'


这里 ^([[:digit:]]+).*:(.*\.flv) 是一个正则表达式 表示这样一个抽象概念 : 以多个连续数字([[:digit:]]+)开头(^)后接任意字符(.*)直到(:)再接任意字符以.fly结束(.*\.flv)。

用这个一个抽象概念表示你要改名的原文件名,替换为$1$2
$1$2分别对应前面两括号中的内容。
恩,谢谢了。不过我有点晕! :em20

Re: 求一个非常初级的循环重命名shell命令

发表于 : 2012-04-30 19:56
mjp123
4L白说了。 :em05

Re: 求一个非常初级的循环重命名shell命令

发表于 : 2012-05-01 1:48
naturalaw
这里的正则表达式,简单来说就是匹配指定格式,然后进行指定操作。
格式与操作
格式非常丰富了,可以参考相关资料
\w 匹配0到1个单词
\d 配置0到1个数字
……
操作可以是替换、删除、引用等