剔掉文件扩展名,如果是的话,一次一个

时间:2015-08-04 11:16:10

标签: regex shell

我有像/dir/dir2/file.ext1.ext2这样的文件名,我希望获得没有一个扩展名的文件名:

/dir/dir2/file.xml.zip.sgn  => file.xml.zip
/dir/dir2/file.xml.zip      => file.xml
/dir/dir2/file.doc          => file
/dir/dir2/file              => file
file                        => file

expr可能很棒,可能是grep -oP

好的,我可以从basename开始扯掉目录,但是如何撕掉最终的可选扩展名呢?

1 个答案:

答案 0 :(得分:1)

x=/etc/lolf/logl/shells.ext1.ext2
y=${x/\/*\//} # rips dir ('basename' do the same)
echo ${y%.*}  # rips last ext

如果没有dirs或exts,它无论如何都有效!

任何人,你能一次性完成所有这些吗?

感谢Andrew Henle,请访问How do I remove the file suffix and path portion from a path string in Bash?

了解更多信息