Get the directory name (not a path) of a given file path in Golang
14,312
You can use filepath.Base
to get the last element of the directory.
For example:
package main
import (
"fmt"
"path/filepath"
)
func main() {
paths := []string{
"/home/arnie/amelia.jpg",
"/mnt/photos/",
"rabbit.jpg",
"/usr/local//go",
}
for _, p := range paths {
dir := filepath.Dir(p)
parent := filepath.Base(dir)
fmt.Printf("input: %q\n\tdir: %q\n\tparent: %q\n", p, dir, parent)
}
}
Returns:
input: "/home/arnie/amelia.jpg"
dir: "/home/arnie"
parent: "arnie"
input: "/mnt/photos/"
dir: "/mnt/photos"
parent: "photos"
input: "rabbit.jpg"
dir: "."
parent: "."
input: "/usr/local//go"
dir: "/usr/local"
parent: "local"
(example adapted from the filepath examples)
Comments
-
Yami Odymel over 1 year
By using the
path/filepath
package with the following example, you can get the full directory path from a file path.package main import ( "fmt" "path/filepath" ) func main() { // Output: /path/to/dir fmt.Println(filepath.Dir("/path//to/dir/file.ext")) }
But is there a
Parent
function to get thedir
from the path? (which is the name of the directory of the file):// The `Parent` is what I want, // and this is a pseudo-code example, this won't actually work. // // Output: dir fmt.Println(filepath.Parent("/path//to/dir/file.ext"))
If it can't be done with the functions, how do I get the parent's name with RegExp?