我有大量文件,我想根据年份将它们分组到文件夹中,并使用修改日期,以便确认。我在 Linux 上使用 ext4 文件系统。是否有任何脚本/工具可以帮助我做到这一点?
答案1
对于将来偶然遇到此问题的人。我编写了这个快速 go 程序来执行此操作。非常快速和粗糙,所以不要指望它是最强大的,但它为我完成了工作。它不是递归的,但要改变这一点,我认为你所要做的就是删除:
if strings.Contains(path, "/") {
return nil
}
package main
import (
"flag"
"fmt"
"os"
"path/filepath"
"strconv"
"strings"
)
func main() {
directory := flag.String("directory", ".", "The directory to run in.")
flag.Parse()
if err := filepath.Walk(*directory, func(path string, info os.FileInfo, err error) error {
if info.IsDir() {
return nil
}
if strings.Contains(path, "/") {
return nil
}
modified := info.ModTime()
yearDirPath := strconv.Itoa(modified.Year())
_ = os.Mkdir(yearDirPath, os.ModePerm)
newPath := fmt.Sprintf("%s/%s", yearDirPath, path)
if err := os.Rename(path, newPath); err != nil {
return err
}
fmt.Printf("moved %s -> %s\n", path, newPath)
return nil
}); err != nil {
panic(err)
}
}