Skip to content

Instantly share code, notes, and snippets.

@magicianzrh
Created March 18, 2015 07:34
Show Gist options
  • Save magicianzrh/4a4d9abfddd4172ce57c to your computer and use it in GitHub Desktop.
Save magicianzrh/4a4d9abfddd4172ce57c to your computer and use it in GitHub Desktop.
/*
clear all empty folder or only contain .DS_Store Thunmbs.db
TODO:CHECK PARENT FOLDER
*/
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
"path/filepath"
"strings"
)
var cur_path string
var all_empty_dir_list []string
var need_del_dir_list []string
func main() {
var err error
cur_path, err = filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
log.Fatal(err)
}
fmt.Println("base dir path:" + cur_path)
del_cache_files()
find_empty_folder()
check_remove_folder()
}
func del_cache_files() {
filepath.Walk(cur_path, func(path string, fi os.FileInfo, err error) error {
if fi == nil {
return err
}
if fi.IsDir() {
return nil
}
if fi.Name() == ".DS_Store" || fi.Name() == "Thumbs.db" {
err := os.Remove(path)
if err != nil {
log.Fatal(err)
}
}
return nil
})
}
func find_empty_folder() {
all_empty_dir_list = make([]string, 0)
filepath.Walk(cur_path, func(path string, fi os.FileInfo, err error) error {
if fi == nil {
return err
}
if fi.IsDir() && !strings.Contains(path, ".git") {
list, err := ioutil.ReadDir(path)
if err != nil {
log.Fatal(err)
}
if len(list) <= 0 {
all_empty_dir_list = append(all_empty_dir_list, path)
}
}
return nil
})
}
func check_remove_folder() {
fmt.Println("==========================")
need_del_dir_list = make([]string, 0)
for _, tmp_dir := range all_empty_dir_list {
fmt.Println("remove:" + tmp_dir)
err := os.Remove(tmp_dir)
if err != nil {
log.Fatal(err)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment