add file free by filter and allow
This commit is contained in:
parent
bfccf4d468
commit
282cdde7f9
|
@ -25,7 +25,7 @@ func StringToFile(path, content string) error {
|
||||||
// rootDir: 文件夹根目录
|
// rootDir: 文件夹根目录
|
||||||
// s: 存储文件名的切片
|
// s: 存储文件名的切片
|
||||||
// filter: 过滤条件:".git", ".idea", ".vscode", ".gitignore", ".gitea", ".github", ".golangci.yml", "*.pyc"
|
// filter: 过滤条件:".git", ".idea", ".vscode", ".gitignore", ".gitea", ".github", ".golangci.yml", "*.pyc"
|
||||||
func FileTree(rootDir string, s []string, filter []string) ([]string, error) {
|
func FileTreeByFilter(rootDir string, s []string, filter []string) ([]string, error) {
|
||||||
rd, err := os.ReadDir(rootDir)
|
rd, err := os.ReadDir(rootDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return s, err
|
return s, err
|
||||||
|
@ -50,7 +50,48 @@ func FileTree(rootDir string, s []string, filter []string) ([]string, error) {
|
||||||
|
|
||||||
if fi.IsDir() {
|
if fi.IsDir() {
|
||||||
fullDir := rootDir + "/" + fi.Name()
|
fullDir := rootDir + "/" + fi.Name()
|
||||||
s, err = FileTree(fullDir, s, filter)
|
s, err = FileTreeByFilter(fullDir, s, filter)
|
||||||
|
if err != nil {
|
||||||
|
return s, err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fullName := rootDir + "/" + fi.Name()
|
||||||
|
s = append(s, fullName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return s, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 递归遍历文件夹
|
||||||
|
// rootDir: 文件夹根目录
|
||||||
|
// s: 存储文件名的切片
|
||||||
|
// allow: 允许条件:".zip", ".check"
|
||||||
|
func FileTreeBySelect(rootDir string, s []string, allow []string) ([]string, error) {
|
||||||
|
rd, err := os.ReadDir(rootDir)
|
||||||
|
if err != nil {
|
||||||
|
return s, err
|
||||||
|
}
|
||||||
|
for _, fi := range rd {
|
||||||
|
// 检查文件名是否匹配任何一个过滤模式
|
||||||
|
matched := false
|
||||||
|
for _, item := range allow {
|
||||||
|
exists, err := filepath.Match(item, fi.Name())
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if exists {
|
||||||
|
matched = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !matched {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if fi.IsDir() {
|
||||||
|
fullDir := rootDir + "/" + fi.Name()
|
||||||
|
s, err = FileTreeBySelect(fullDir, s, allow)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return s, err
|
return s, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue