如何自动删除文件名中的文件扩展名

时间:2012-11-12 03:19:55

标签: file bash cut

我正在尝试在bash中创建一个需要从文件名中删除文件扩展名的脚本,如下所示

original:   something.zip
removed version: something

我以为我可以使用cut来解决这个问题,但是我担心可能会出现一个文件名有多个句点的情况等等,类似于以下内容

something.v2.zip

话虽如此,我想知道是否有人有任何建议我可以做些什么来从一行文本/文件名中删除最后一段时间和文本后面的文字?任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:7)

 f=file.zip
 echo ${f%.zip}

 file

'%'是一个参数修饰符,它意味着,从'%'字符后面的变量值的右侧删除,在本例中为字符串.zip。您可以通过使用像

这样的通配符来更加通用地删除任何尾随扩展名
 echo ${f%.*}

 file

IHTH

答案 1 :(得分:2)

如果要将上一个句点删除到结尾,请尝试以下操作:

$ f=some.thing.zip
$ echo ${f%.*}
some.thing