Skip to content

Commit

Permalink
start big
Browse files Browse the repository at this point in the history
  • Loading branch information
davemolk committed Mar 4, 2023
1 parent 40ebe5a commit 240de85
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 0 deletions.
31 changes: 31 additions & 0 deletions big/big.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package big

import (
"fmt"
"io/fs"
)

func Files(fsys fs.FS, size int64) (int64, error) {
var count int64
err := fs.WalkDir(fsys, ".", func(p string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
info, err := d.Info()
if err != nil {
return err
}

fmt.Printf("%s: [%s]\n", info.Name(), ByteCountIEC(info.Size()))

if info.Size() >= size {
count++
}
return nil
})
if err != nil {
return 0, err
}

return count, nil
}
31 changes: 31 additions & 0 deletions big/bytes.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package big

import "fmt"

func ByteCountSI(b int64) string {
const unit = 1000
if b < unit {
return fmt.Sprintf("%d B", b)
}
div, exp := int64(unit), 0
for n := b / unit; n >= unit; n /= unit {
div *= unit
exp++
}
return fmt.Sprintf("%.1f %cB",
float64(b)/float64(div), "kMGTPE"[exp])
}

func ByteCountIEC(b int64) string {
const unit = 1024
if b < unit {
return fmt.Sprintf("%d B", b)
}
div, exp := int64(unit), 0
for n := b / unit; n >= unit; n /= unit {
div *= unit
exp++
}
return fmt.Sprintf("%.1f %ciB",
float64(b)/float64(div), "KMGTPE"[exp])
}
24 changes: 24 additions & 0 deletions big/cmd/big/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package main

import (
"flag"
"fmt"
"os"

"github.com/davemolk/scripts/big"
)


func main() {
var dir string
var size int64
flag.StringVar(&dir, "d", ".", "directory to start walk")
flag.Int64Var(&size, "s", 0, "minimum file size")
flag.Parse()

c, err := big.Files(os.DirFS(dir), size)
if err != nil {
fmt.Println(err)
}
fmt.Println(c)
}

0 comments on commit 240de85

Please sign in to comment.