From 1a3d3ae6c99ddee81ee1d2f4bc6624370c5ee22f Mon Sep 17 00:00:00 2001 From: soxft Date: Tue, 12 Nov 2024 15:40:55 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Feat:=20dir=5Fauto=20=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E4=B8=8B=E6=94=AF=E6=8C=81=E6=8C=89=E7=85=A7=E6=AD=A3?= =?UTF-8?q?=E5=88=99=E8=A1=A8=E8=BE=BE=E5=BC=8F=E8=A7=A3=E6=9E=90=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes README.md | 24 +++++++++++++++++++++++- dir_auto/dir_auto.go | 21 +++++++++++++++++++++ fg/fg.go | 2 ++ 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/.DS_Store b/.DS_Store index a42b2f9c32f50f0aa2892fd734891c3aec00a949..d74b42bdaa574e8fe04864f16ad976053983762b 100644 GIT binary patch delta 127 zcmZoMXfc@J&&aniU^g=(-)0^bdq&2clYLkVxh1QsO-w9x6pRhcC!b`MVeFp#j8&eo zXEGa`rz{IY5ko3NB14L2PJVJyPJR*t1A_n%?*`&|lU>+sfhtNE@_{f1RRyCVNX6zd MHYdi->>Pjj0YzvZe*gdg delta 71 zcmV-N0J#5zFoZCWPXP?EP`d*G46_UbKLG){lS~D13>tfTF*7kUEFd;CHj~H&9081z d= 0; i-- { + if fg.Regex != "" { + // 尝试进行正则匹配 + re := regexp.MustCompile(fg.Regex) + + if re.MatchString(sp[i]) { + timeStr := re.FindStringSubmatch(sp[i]) + + for _, v := range timeStr { + parsedTime, err := time.Parse(fg.DateTpl, v) + if err == nil { + return parsedTime, nil + } + } + + continue + } + + continue + } + // 对于后缀 if i == len(sp)-1 && strings.Contains(sp[i], ".") { sp := strings.Split(sp[i], ".") diff --git a/fg/fg.go b/fg/fg.go index c698b88..33f3dba 100644 --- a/fg/fg.go +++ b/fg/fg.go @@ -10,6 +10,7 @@ var DateTime string var DateTpl = "2006-01-02 15.04.05" var Force bool var SkipSafeQA bool +var Regex string // Parse 解析命令行参数 func Parse() { @@ -17,6 +18,7 @@ func Parse() { flag.StringVar(&Path, "p", "./", "文件夹路径") flag.StringVar(&DateTime, "d", "", "日期时间") flag.StringVar(&DateTpl, "t", "2006-01-02 15.04.05", "日期时间模板, 默认为 '2006-01-02 15.04.05' 请参照 Golang 时间 layout 设置, 不适用于 QuMagie 模式") + flag.StringVar(&Regex, "r", "", "仅 dir_auto 模式适用, 在解析时间之前, 从文件名中提取时间的正则表达式") flag.BoolVar(&Force, "f", false, "强制执行, 不会检查是否已经有日期") flag.BoolVar(&SkipSafeQA, "skip", false, "跳过安全询问, 直接执行")