we specify a directory and assign this path to the "folder" variable. Then we use os.Open and Readdir to get the list of files in that directory.
package main
import (
"fmt"
"os"
"sort"
"io/fs"
)
// Access Size() in Less() to sort by file size.
type ByFileSize []fs.FileInfo
func (a ByFileSize) Len() int { return len(a) }
func (a ByFileSize) Less(i, j int) bool { return a[i].Size() > a[j].Size() }
func (a ByFileSize) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func main() {
folder :=
"/Users/sam/programs/"
// Read directory.
dirRead, _ := os.Open(folder)
dirFiles, _ := dirRead.Readdir(0)
// Sort by file size.
sort.Sort(ByFileSize(dirFiles))
// Write results.
for dirIndex := range dirFiles {
fileHere := dirFiles[dirIndex]
fmt.Println(fileHere.Name(), fileHere.Size())
}
}
search-perls.txt 204568
merged-perls.txt 49157
...
program.php 196