在Shell脚本中使用mv命令重命名文件的部分

3
我希望在shell脚本中使用mv命令重命名文件
现在文件的格式为foo-<日期>.tar.gz,我想将它重命名为foo1-<日期>.tar.gz.
我尝试了切割foo、重命名和连接等操作,但我想要非常简单的操作如下
mv foo*.tar.gz foo1*.tar.gz
只有日期应该被保留,foo应该被改为foo1。 是否可能?如果是,如何实现?
谢谢你!

请查看此问题:http://stackoverflow.com/questions/17554092/unix-move-command-regex - Chris Maes
这有点不同,我不想改变完整的基本名称,我只想改变基本名称的一部分。而基本名称的第二部分是日期,它不是固定的字符串(例如"java")。谢谢回复。 - ART
是的,我明白了,但基本上你需要使用正则表达式进行移动...无论如何,只要问题正确,你就能得到答案 :) - Chris Maes
1个回答

2
您可以使用BASH字符串操作:
f='foo-12APR2014.tar.gz'
nf="foo1-${f#*-}"

测试:

echo "$nf"
foo1-12APR2014.tar.gz

PS:如果不使用BASH,则可以使用sed:

nf=`echo "$f"|sed 's/^foo/foo1/'`

感谢Anubhava的快速响应,两者都适用于Bash和Busybox shell。 - ART

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接