Skip to content

Instantly share code, notes, and snippets.

@ivanzoid
Last active April 25, 2023 06:21
Show Gist options
  • Star 12 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save ivanzoid/129460aa08aff72862a534ebe0a9ae30 to your computer and use it in GitHub Desktop.
Save ivanzoid/129460aa08aff72862a534ebe0a9ae30 to your computer and use it in GitHub Desktop.
package main
import (
"strings"
"path/filepath"
)
func fileNameWithoutExtension(fileName string) string {
return strings.TrimSuffix(fileName, filepath.Ext(fileName))
}
@missinglink
Copy link

ok fair enough, filepath.Ext() agrees:

The extension is the suffix beginning at the final dot in the final element of path

Bash has a few different ways of getting the extension, depending on what you want:

~% FILE="example.tar.gz"

~% echo "${FILE%%.*}"
example

~% echo "${FILE%.*}"
example.tar

~% echo "${FILE#*.}"
tar.gz

~% echo "${FILE##*.}"
gz

@othell-sr
Copy link

It may be a good safeguard to have filename go through filepath.Base() first

return strings.TrimSuffix(filepath.Base(fileName), filepath.Ext(fileName))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment