分页: 1 / 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


好像完全不对啊,求指点,我是新手

Re: 求助一个改名的脚本

发表于 : 2011-11-01 17:56
naturalaw

代码: 全选

for i in 群星*.wav.m4a; do a="${i/wav./}";b="${a##群星\ -\ }"; cp "$i" "$b" ;done

Re: 求助一个改名的脚本

发表于 : 2011-11-01 18:24
naturalaw

代码: 全选

rename .wav.m4a .m4a  *m4a
rename '群星 - ' "" *m4a

Re: 求助一个改名的脚本

发表于 : 2011-11-01 20:20
lilydjwg
naturalaw 写了:

代码: 全选

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

代码: 全选

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

代码: 全选

xsel | xargs -I{} touch "{}"

Re: 求助一个改名的脚本

发表于 : 2011-11-01 21:11
naturalaw
lilydjwg 写了:
naturalaw 写了:

代码: 全选

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

代码: 全选

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

代码: 全选

xsel | xargs -I{} touch "{}"
perl正则方面果然最强。

Re: 求助一个改名的脚本

发表于 : 2011-11-01 22:06
fnan
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'

Re: 求助一个改名的脚本

发表于 : 2011-11-01 22:10
naturalaw
${i//?(* |.wav)/}
又见到高级货。久不用又忘记了。