求助一个改名的脚本

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
夜聆风
帖子: 33
注册时间: 2011-08-28 22:13

求助一个改名的脚本

#1

帖子 夜聆风 » 2011-11-01 10:25

就是文件是形如
群星 - 堡垒.wav.m4a
群星 - 悲.wav.m4a
群星 - 别恐惧.wav.m4a

然后我想改成
堡垒,m4a
悲.m4a
别恐惧.m4a

然后我是这样写的

#!bin/bash

for i in 群星\ -\ *.wav.m4a
do
cp "$i" * .m4a

done


好像完全不对啊,求指点,我是新手
Unity 确实已经做的很好了,你不喜欢我也可以理解,但是请不要轻易宣传它烂,然后怂恿别人换好么?
头像
naturalaw
帖子: 1360
注册时间: 2011-09-06 22:04

Re: 求助一个改名的脚本

#2

帖子 naturalaw » 2011-11-01 17:56

代码: 全选

for i in 群星*.wav.m4a; do a="${i/wav./}";b="${a##群星\ -\ }"; cp "$i" "$b" ;done
  • The eternal law
头像
naturalaw
帖子: 1360
注册时间: 2011-09-06 22:04

Re: 求助一个改名的脚本

#3

帖子 naturalaw » 2011-11-01 18:24

代码: 全选

rename .wav.m4a .m4a  *m4a
rename '群星 - ' "" *m4a
  • The eternal law
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 求助一个改名的脚本

#4

帖子 lilydjwg » 2011-11-01 20:20

naturalaw 写了:

代码: 全选

rename .wav.m4a .m4a  *m4a
rename '群星 - ' "" *m4a
我本来准备答 rename 的。。。好吧,我用 Perl 版的:

代码: 全选

perl-rename 's/群星 - (.*).wav.m4a/\1.m4a/' *.m4a
另外,创建这种测试文件名似乎不容易,我用的是:

代码: 全选

xsel | xargs -I{} touch "{}"
头像
naturalaw
帖子: 1360
注册时间: 2011-09-06 22:04

Re: 求助一个改名的脚本

#5

帖子 naturalaw » 2011-11-01 21:11

lilydjwg 写了:
naturalaw 写了:

代码: 全选

rename .wav.m4a .m4a  *m4a
rename '群星 - ' "" *m4a
我本来准备答 rename 的。。。好吧,我用 Perl 版的:

代码: 全选

perl-rename 's/群星 - (.*).wav.m4a/\1.m4a/' *.m4a
另外,创建这种测试文件名似乎不容易,我用的是:

代码: 全选

xsel | xargs -I{} touch "{}"
perl正则方面果然最强。
  • The eternal law
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 求助一个改名的脚本

#6

帖子 fnan » 2011-11-01 22:06

rename -v 's/.* |\.wav//g' 群星*.m4a
群星 - 别恐惧.wav.m4a renamed as 别恐惧.m4a
群星 - 堡垒.wav.m4a renamed as 堡垒.m4a
群星 - 悲.wav.m4a renamed as 悲.m4a
for i in 群星*.m4a;do mv -v "$i" "${i//?(* |.wav)/}";done
`群星 - 别恐惧.wav.m4a' -> `别恐惧.m4a'
`群星 - 堡垒.wav.m4a' -> `堡垒.m4a'
`群星 - 悲.wav.m4a' -> `悲.m4a'
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
naturalaw
帖子: 1360
注册时间: 2011-09-06 22:04

Re: 求助一个改名的脚本

#7

帖子 naturalaw » 2011-11-01 22:10

${i//?(* |.wav)/}
又见到高级货。久不用又忘记了。
  • The eternal law
回复