这个功能用shell怎么实现?
- coolwin
- 帖子: 271
- 注册时间: 2008-03-17 17:47
这个功能用shell怎么实现?
将一个目录下所有的文件名的数字都增加26,比如原来的文件名是a001.jpg。脚本执行后文件名为a027.jpg。
-
- 帖子: 198
- 注册时间: 2007-11-10 8:57
Re: 这个功能用shell怎么实现?
ls *.jpg|while read file;do ((++n));mv "$file" a$n+26.jpg;done
你测试一下,不一定对.
你测试一下,不一定对.
- bones7456
- 帖子: 8495
- 注册时间: 2006-04-12 20:05
- 来自: 杭州
- 联系:
Re: 这个功能用shell怎么实现?
use on your own risk!
要求原文件名不含空白字符.如果原来就有 a001.jpg 和 a027.jpg ,后者会被覆盖.自己小心~
代码: 全选
ls *.jpg| awk '{match($1,/[0-9]+/);system("mv "$1" "sprintf("%s%03d%s",substr($1,0,RSTART-1),substr($1,RSTART,RLENGTH)+26,substr($1,RSTART+RLENGTH)))}'
关注我的blog: ε==3
- coolwin
- 帖子: 271
- 注册时间: 2008-03-17 17:47
Re: 这个功能用shell怎么实现?
楼上的可以,谢谢两位
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: 这个功能用shell怎么实现?
代码: 全选
for i in *; do nm0="`echo $i|grep -o [0-9]*`";nm1="`bc <<<$nm0+26`";nm1="`printf '%.3d' $nm1`";mv $i ${i//[0-9]*/$nm1.jpg};done
ps:我的比骨头的短了24个字符呢,哈哈
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: 这个功能用shell怎么实现?
代码: 全选
for i in *;do a="`grep -o [0-9]*<<<$i`";b="`bc<<<$a+26`";b="`printf '%.3d' $b`";echo ${i//[0-9]*/$b.jpg};done
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: 这个功能用shell怎么实现?
难道直接用rename?我perl的正则不熟哦。
- qq274980
- 帖子: 69
- 注册时间: 2009-04-09 9:16
Re: 这个功能用shell怎么实现?
xiooli 写了:ps:我的比骨头的短了24个字符呢,哈哈
代码: 全选
ls|awk '{system(sprintf("mv %s a%03s.jpg\n",$1,substr($0,2,3)+26))}'
- lerosua
- 论坛版主
- 帖子: 8455
- 注册时间: 2007-11-29 9:41
- 联系:
Re: 这个功能用shell怎么实现?
脚本党出动...
-
- 帖子: 198
- 注册时间: 2007-11-10 8:57
Re: 这个功能用shell怎么实现?
题外,谁开发过linux下的四国军棋?
我一直wine没有成功
我一直wine没有成功
- qq274980
- 帖子: 69
- 注册时间: 2009-04-09 9:16
Re: 这个功能用shell怎么实现?
blue sea 写了:题外,谁开发过linux下的四国军棋?
我一直wine没有成功
先有四国麻将,才有空去写四国军棋,毕竟要看用户量办事