当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 13 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 2:28 
头像

注册: 2008-03-17 17:47
帖子: 271
送出感谢: 0 次
接收感谢: 0 次
将一个目录下所有的文件名的数字都增加26,比如原来的文件名是a001.jpg。脚本执行后文件名为a027.jpg。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 10:38 

注册: 2007-11-10 8:57
帖子: 198
送出感谢: 0 次
接收感谢: 0 次
ls *.jpg|while read file;do ((++n));mv "$file" a$n+26.jpg;done

你测试一下,不一定对.


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 10:41 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
use on your own risk!
代码:
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)))}'

要求原文件名不含空白字符.如果原来就有 a001.jpg 和 a027.jpg ,后者会被覆盖.自己小心~


_________________
关注我的blog: ε==3


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 15:22 
头像

注册: 2008-03-17 17:47
帖子: 271
送出感谢: 0 次
接收感谢: 0 次
楼上的可以,谢谢两位


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 15:45 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
代码:
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

bc应该有格式化输出的方法,我不知道,所以有点丑陋,将就能用而已。
ps:我的比骨头的短了24个字符呢,哈哈 :em05


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 15:50 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
我肯定可以再减少一半。
呵呵


_________________
● 鸣学


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 15:57 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
代码:
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
短了42个字符。 :em11


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 15:59 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
lz的思维,很呆板的。你也跟。换个思维吧。再短一半。


_________________
● 鸣学


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 16:12 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
难道直接用rename?我perl的正则不熟哦。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 16:32 
头像

注册: 2009-04-09 9:16
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
xiooli 写道:
ps:我的比骨头的短了24个字符呢,哈哈 :em05

代码:
ls|awk '{system(sprintf("mv %s a%03s.jpg\n",$1,substr($0,2,3)+26))}'

骨头最短 :em04


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 17:12 
头像

注册: 2007-11-29 9:41
帖子: 8455
送出感谢: 0 次
接收感谢: 0 次
脚本党出动...


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 17:27 

注册: 2007-11-10 8:57
帖子: 198
送出感谢: 0 次
接收感谢: 0 次
题外,谁开发过linux下的四国军棋?

我一直wine没有成功 :em06


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 这个功能用shell怎么实现?
帖子发表于 : 2009-05-25 17:29 
头像

注册: 2009-04-09 9:16
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
blue sea 写道:
题外,谁开发过linux下的四国军棋?

我一直wine没有成功 :em06



先有四国麻将,才有空去写四国军棋,毕竟要看用户量办事 :em01


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 13 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译