|
@@ -0,0 +1,73 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "flag"
|
|
|
+ "fmt"
|
|
|
+ "io/fs"
|
|
|
+ "os"
|
|
|
+ "path/filepath"
|
|
|
+)
|
|
|
+
|
|
|
+var help bool
|
|
|
+var recurse bool
|
|
|
+var force bool
|
|
|
+var rf bool
|
|
|
+
|
|
|
+func main() {
|
|
|
+ flag.BoolVar(&help, "h", false, "print help")
|
|
|
+ flag.BoolVar(&recurse, "r", false, "remove directories and their contents recursively")
|
|
|
+ flag.BoolVar(&force, "f", false, "ignore nonexistent files and arguments, never prompt")
|
|
|
+ flag.BoolVar(&rf, "rf", false, "-r and -f")
|
|
|
+ flag.Parse()
|
|
|
+ if help {
|
|
|
+ flag.PrintDefaults()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if rf {
|
|
|
+ recurse = true
|
|
|
+ force = true
|
|
|
+ }
|
|
|
+ for _, iv := range flag.Args() {
|
|
|
+ list, err := filepath.Glob(iv)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ if !force {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for _, jv := range list {
|
|
|
+ if recurse {
|
|
|
+ err := filepath.Walk(jv, func(path string, info fs.FileInfo, err error) error {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ if !force {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ errx := os.Remove(path)
|
|
|
+ if errx != nil {
|
|
|
+ fmt.Println(errx.Error())
|
|
|
+ if !force {
|
|
|
+ return errx
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ if !force {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ err := os.Remove(jv)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ if !force {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|