批量重新命名/刪除檔案
阿新 • • 發佈:2022-05-26
平時下載檔案或者視訊的命名很多帶有長長的網址字首,比如一些程式設計的教學視訊,如果對其進行重新命名觀感上舒服多了;還有一些的壓縮包,解壓之後,資料夾中包含廣告的網頁檔案,我們也希望對其進行刪除。
批量重新命名檔案
package main import ( "fmt" "io/ioutil" "os" "strings" ) // updateFileName 重新命名資料夾 dirname 中的檔案,將 oldStr 字串替換為 newStr func updateFileName(dirPath, oldStr, newStr string) { fileInfos, err := ioutil.ReadDir(dirPath) if err != nil { return } for _, fileInfo := range fileInfos { filePath := dirPath + "\\" + fileInfo.Name() fmt.Println(filePath) // 列印檔案地址 if fileInfo.IsDir() { // 如果當前檔案是資料夾,遞迴呼叫 updateFileName(filePath, oldStr, newStr) } else { // 如果檔名包含 oldStr 欄位,則將替換為 newStr if strings.Contains(fileInfo.Name(), oldStr) { err := os.Rename(filePath, dirPath+"\\"+strings.Replace(f.Name(), oldStr, newStr, -1)) if err != nil { panic(err) } } } } } func main() { // 重新命名 test 資料夾下所有檔案,將 "www.xxx.com" 替換為 "" updateFileName("C:\\xxx\\test", "www.xxx.com", "") }
批量刪除檔案
package main import ( "fmt" "io/ioutil" "os" ) // deleteFile 刪除 dirPath 目錄下的指定檔案(fileNameSet) func deleteFile(dirPath string, fileNameSet map[string]bool) { fileInfos, err := ioutil.ReadDir(dirPath) if err != nil { panic(err) } for _, fileInfo := range fileInfos { filePath := dirPath + "\\" + fileInfo.Name() fmt.Println(filePath) // 列印檔案地址 if fileInfo.IsDir() { // 如果當前檔案是資料夾,遞迴呼叫 deleteFile(filePath, fileNameSet) } else { // 刪除指定檔案 if _, ok := fileNameSet[fileInfo.Name()]; ok { err := os.Remove(filePath) if err != nil { panic(err) } } } } } func main() { // 刪除 C:\xxx\test 目錄下的所有 xxx.txt 檔案 fileNames := []string{"xxx.txt"} fileNameSet := make(map[string]bool, len(fileNames)) for _, fileName := range fileNames { fileNameSet[fileName] = true } deleteFile("C:\\xxx\\test", fileNameSet) }