Go 遞歸刪除空目錄


這個可以通過shell腳本來達到目的。

find -type d -empty|xrags rmdir

寫這個是因為有個 windows 的服務器,又不熟悉批處理和powershell腳本,就寫了這么個玩意,放在這里做個記錄。

package main

import (
	"fmt"
	"io/ioutil"
	"os"
	"path"
)

func findEmptyFolder(dirname string) (emptys []string, err error) {
	// Golang學習 - io/ioutil 包
	// https://www.cnblogs.com/golove/p/3278444.html

	files, err := ioutil.ReadDir(dirname)
	if err != nil {
		return nil, err
	}
	// 判斷底下是否有文件
	if len(files) == 0 {
		return []string{dirname}, nil
	}

	for _, file := range files {
		if file.IsDir() {
			edirs, err := findEmptyFolder(path.Join(dirname, file.Name()))
			if err != nil {
				return nil, err
			}
			if edirs != nil {
				emptys = append(emptys, edirs...)
			}
		}
	}
	return emptys, nil
}

func main() {
	if len(os.Args) != 2 {
		fmt.Println("Usage:", os.Args[0], "起始路徑")
		return
	}
	emptys, err := findEmptyFolder(os.Args[1])
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	for _, dir := range emptys {
		if err := os.Remove(dir); err != nil {
			fmt.Println("錯誤:", err.Error())
		} else {
			fmt.Println("刪除成功:", dir)
		}
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM