当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 批量改名脚本求助。
帖子发表于 : 2012-03-02 10:04 

注册: 2009-06-28 10:06
帖子: 398
系统: ubuntu12.04
送出感谢: 0 次
接收感谢: 6
我写了个批量改图片名的脚本,其中有一句
mv $pic ${a}.jpg
((a+=1))
变量a初值为1,这样改名为1.jpg,2.jpg。但我想改成类似001.jpg这种格式,共三位,不足前面补0.
写成mv $pic `printf XXX a`.jpg的形式行不,格式该咋样啊?
我用手机码的字,说的不是很清楚,凑和着看吧。


_________________
Still Alive


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 批量改名脚本求助。
帖子发表于 : 2012-03-02 10:16 
头像

注册: 2011-11-05 18:53
帖子: 158
地址: 南极圈
送出感谢: 0 次
接收感谢: 7
代码:
 mv $pic `printf "%03d" $a`.jpg


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 批量改名脚本求助。
帖子发表于 : 2012-03-02 10:37 
头像

注册: 2009-03-05 16:31
帖子: 2794
送出感谢: 0 次
接收感谢: 11
参考我的: https://github.com/adam8157/scripts/blo ... ass-rename


_________________
http://adam8157.info/


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 批量改名脚本求助。
帖子发表于 : 2012-03-02 12:38 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
gprename


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 批量改名脚本求助。
帖子发表于 : 2012-03-02 13:00 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
我常用的另一个办法是,让a从1001开始,并把 ${a} 改为 ${a#1} 以便去掉前面的“1”。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 批量改名脚本求助。
帖子发表于 : 2012-03-02 13:27 

注册: 2009-06-28 10:06
帖子: 398
系统: ubuntu12.04
送出感谢: 0 次
接收感谢: 6
谢谢各位解答。我再问个问题,如果我在a目录中放有1.sh,2.sh,2.sh中应该可以调用1.sh这个脚本吧,
如 ./1.sh 这样。
现在我手边没有电脑,无法实验,只好提出假设。另外 .和source均可设置工作目录,source可以影响到子shell,是不是这样啊。问题比较多,比较乱。先谢谢各位了。


_________________
Still Alive


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 批量改名脚本求助。
帖子发表于 : 2012-03-02 15:11 
头像

注册: 2012-02-07 23:08
帖子: 45
送出感谢: 1
接收感谢: 2
aerofox 写道:
我常用的另一个办法是,让a从1001开始,并把 ${a} 改为 ${a#1} 以便去掉前面的“1”。


请问这个是什么用法?
${a#1}


_________________
在这里,问题比答案更抢手。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 批量改名脚本求助。
帖子发表于 : 2012-03-02 15:43 

注册: 2009-06-28 10:06
帖子: 398
系统: ubuntu12.04
送出感谢: 0 次
接收感谢: 6
Think1st 写道:
aerofox 写道:
我常用的另一个办法是,让a从1001开始,并把 ${a} 改为 ${a#1} 以便去掉前面的“1”。


请问这个是什么用法?
${a#1}

同问。


_________________
Still Alive


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 批量改名脚本求助。
帖子发表于 : 2012-03-02 19:34 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
Think1st 写道:
aerofox 写道:
我常用的另一个办法是,让a从1001开始,并把 ${a} 改为 ${a#1} 以便去掉前面的“1”。


请问这个是什么用法?
${a#1}


代码:
       ${parameter#word}
       ${parameter##word}
              Remove  matching  prefix pattern.  The word is expanded to produce a pattern just as in pathname expansion.  If the pat‐
              tern matches the beginning of the value of parameter, then the result of the expansion is the expanded value of  parame‐
              ter  with  the shortest matching pattern (the ``#'' case) or the longest matching pattern (the ``##'' case) deleted.  If
              parameter is @ or *, the pattern removal operation is applied to each positional parameter in turn, and the expansion is
              the resultant list.  If parameter is an array variable subscripted with @ or *, the pattern removal operation is applied
              to each member of the array in turn, and the expansion is the resultant list.

以上摘自bash的手册。具体到我那例子,就是 $a 的结果中去掉开头的 1。


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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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