123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package main
- import (
- "bufio"
- "flag"
- "io/ioutil"
- "log"
- "os"
- "path/filepath"
- "strings"
- )
- var (
- dir = flag.String("d", "./attaches", "目录")
- mode = flag.String("m", "scan", "模式:scan扫描目录 rename更名")
- sourceDatafile = flag.String("sdf", "./source.txt", "原始数据文件(不能换顺序)")
- targetDatafile = flag.String("tdf", "./target.txt", "目标数据文件(不能换顺序)")
- )
- // init
- func init() {
- flag.Parse()
- }
- // scan
- func scan() {
- fo1, err := os.Create(*sourceDatafile)
- if err != nil {
- log.Fatal(err)
- }
- fo2, err := os.Create(*targetDatafile)
- if err != nil {
- log.Fatal(err)
- }
- defer fo1.Close()
- defer fo2.Close()
- fs, err := ioutil.ReadDir(*dir)
- if err != nil {
- log.Fatal(err)
- }
- for _, f := range fs {
- if strings.HasPrefix(f.Name(), ".") {
- continue
- }
- fo1.WriteString(f.Name() + "\n")
- fo2.WriteString(f.Name() + "\n")
- }
- }
- // rename
- func rename() {
- fi1, err := os.Open(*sourceDatafile)
- if err != nil {
- log.Fatal(err)
- }
- fi2, err := os.Open(*targetDatafile)
- if err != nil {
- log.Fatal(err)
- }
- defer fi1.Close()
- defer fi2.Close()
- source, target := make([]string, 0, 0), make([]string, 0, 0)
- br1 := bufio.NewReader(fi1)
- for {
- bytes, _, err := br1.ReadLine()
- if err != nil {
- break
- }
- source = append(source, string(bytes))
- }
- br2 := bufio.NewReader(fi2)
- for {
- bytes, _, err := br2.ReadLine()
- if err != nil {
- break
- }
- target = append(target, string(bytes))
- }
- if len(source) != len(target) {
- log.Println("数据文件,源 目标 长度不一致")
- return
- }
- for index, s := range source {
- oldName, newName := s, target[index]
- log.Println(oldName, ">>", newName)
- os.Rename(filepath.Join(*dir, oldName), filepath.Join(*dir, newName))
- }
- }
- // main
- func main() {
- switch *mode {
- case "scan":
- scan()
- case "rename":
- rename()
- }
- }
|