2013-03-08 174 views
0

我有一个需要重命名的格式为foo001.h21.tif的文件列表。我知道如何从文件名末尾替换strip,但不是开始。我基本上需要去掉它,所以它可以保存为001.h21.tif。通常我会用:文本替换

for i in *.tif; do mv $i ${i%%.tif}; done 

拍摄前.tif一切。有人可以帮我弄清楚如何去相反的方式吗?

谢谢!

+0

你应该知道你正在使用哪种语言,因为有多个正则表达式的风味 – nicopico 2013-03-08 22:22:49

+0

@nicopico它的标签bash和正则表达式不需要 – jordanm 2013-03-08 22:24:01

+0

是的标签是在我进入我的评论时添加的... – nicopico 2013-03-08 22:25:23

回答

1

%%%是后缀###是前缀。在你的情况下,你可以写:

for filename in foo*.tif; do mv "$filename" "${filename#foo}"; done 

请参阅§3.5.3 "Shell Parameter Expansion" in the Bash Reference Manual

+0

太棒了!谢谢!你能推荐一些我可以更多地了解这个的地方吗? – ShaunLangley 2013-03-08 22:26:32

+0

@ShaunLangley:Yup;我的答案中有一个链接。 :-)(您可能在添加链接之前看到了答案。) – ruakh 2013-03-08 22:29:59