cut file extension
jschrod at acm.org
Wed Feb 20 16:04:52 UTC 2008
Owen Townend wrote:
> >>> Look into `sed`. Something like this should do it
> >>> `sed -e 's/.*$//'`
> >>> That's from the top of my head though, check it first!
> >> man basename may be useful :-)
> >> and the Owen's sed command isn't quite right, use 's/\..*$//'.
> > ahah, that's closer to what I was aiming for, but it still doesn't
> > account for files like 'file.name.ext' cutting them to 'file' though it should only
> match the end
> > of the line... ?
> I was thinking there must be a way to do this quickly in sed,
> but I can't seem to find the right regex to match it correctly.
> ah well, a solution in search of a problem now with it fixed.
This is for the case that somebody needs this for arbitrary Unix
systems, where bash might not be available. I.e., plain old sh
It would still not work, you need to supply the file name on stdin.
basename=`echo "$fname" | sed 's/\.[^.]*$//'` would do the trick.
Of course, one could also use
basename=`expr "$fname" : '.*\.\([^.]*\)$'`
(Please note the quote to support filename with spaces.)
And one should mention that basename, which was named as a
solution, allows only to strip known suffixes, not arbitrary ones.
Joachim Schrod Email: jschrod at acm.org
More information about the ubuntu-users