sh/bash/dash/ksh/zsh等Shell脚本
-
ulosggs
- 帖子: 206
- 注册时间: 2009-03-25 13:17
#1
帖子
由 ulosggs » 2011-04-24 18:21
我有这么一堆文件夹,很有规律的
代码: 全选
S.E.N.S.神思者-01[海上丝路·海神][1988.04.25](APE) S.E.N.S.神思者-28[Future][2000.02.23][OST](APE)
S.E.N.S.神思者-02[海上丝路·茶之圆舞曲][1988.10.10](APE) S.E.N.S.神思者-29[透明な音楽][2000.08.23](APE)
S.E.N.S.神思者-03[海上丝路·伽罗][1989.08.05](APE) S.E.N.S.神思者-30[透明な音楽2][2000.12.06](APE)
...
我需要将其重命名为
代码: 全选
01[海上丝路·海神][1988.04.25] 02[海上丝路·茶之圆舞曲][1988.10.10]
...
就是将前面的 "S.E.N.S.神思者-" 和后面的 "(APE)"去掉
请教该怎么操作
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#2
帖子
由 eexpress » 2011-04-24 19:19
安装一个gprename
学点正则。
或者直接试试下面的效果。
rename -n 's/\(.*\)//g' S\.E\.N*
● 鸣学
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#3
帖子
由 fnan » 2011-04-24 20:54
bash比较麻烦,不过可以用:
cd 文件夹
for i in $(ls -1|grep "神思者-");do mv $i $(echo $i|sed 's/.*-\(.*\)(.*/\1/');done
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
-
联系:
#4
帖子
由 lilydjwg » 2011-04-24 21:41
rename +1
-
frankleng
- 帖子: 406
- 注册时间: 2008-10-30 10:40
#6
帖子
由 frankleng » 2011-05-30 9:20
gprename我安装下看看。

挺好的。

Namas Amitabha
南无阿弥陀佛
一切有为法,如梦幻泡影,
如露亦如电,应作如是观。
-
horseinfly
- 帖子: 9
- 注册时间: 2011-05-30 3:04
#7
帖子
由 horseinfly » 2011-05-30 9:50
ls |sed 's/S.E.N.S.神思者-//g'|sed 's/(APE)//g'>1; for i in `cat 1`;do mkdir $1;done; for i in `cat 1`;do mv S.E.N.S.神思者-$i(APE)/* $i/ ; rm -r S.E.N.S.神思者-$i(APE);done
-
tusooa
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
-
联系:
#8
帖子
由 tusooa » 2011-06-23 22:25
代码: 全选
prename 's/^S.E.N.S.神思者-//;s/(APE)$//;' *