12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 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
- }
- }
- }
- }
- }
- }
|