parent
13d60f3fd6
commit
f54892934f
@ -0,0 +1,2 @@ |
||||
du |
||||
du.exe |
||||
@ -0,0 +1,4 @@ |
||||
|
||||
|
||||
build: |
||||
go build .
|
||||
@ -0,0 +1,45 @@ |
||||
package main |
||||
|
||||
import ( |
||||
"fmt" |
||||
"log" |
||||
"flag" |
||||
"io/fs" |
||||
"path/filepath" |
||||
) |
||||
|
||||
func StatDir(target_path string) error { |
||||
var cur_dir string |
||||
var cur_size int64 |
||||
|
||||
// NOTE: cover the difference betweeen filepath.WalkDir and fs.WalkDir
|
||||
|
||||
err := filepath.WalkDir(target_path, func (path string, d fs.DirEntry, err error) error { |
||||
if d.IsDir() { |
||||
if cur_dir != path { |
||||
loc := filepath.Join(target_path, cur_dir) |
||||
fmt.Printf("%s %d\n", loc, cur_size / 1024) |
||||
cur_dir = path |
||||
cur_size = 0 |
||||
} |
||||
} else { |
||||
info, err := d.Info() |
||||
if err != nil { return nil } |
||||
cur_size += info.Size() |
||||
} |
||||
|
||||
return nil |
||||
}) |
||||
|
||||
return err |
||||
} |
||||
|
||||
func main() { |
||||
flag.Parse() |
||||
paths := flag.Args() |
||||
|
||||
for _, path := range paths { |
||||
err := StatDir(path) |
||||
if err != nil { log.Fatal(err) } |
||||
} |
||||
} |
||||
Loading…
Reference in new issue