如何按修改日期将文件分组到单独的文件夹中?

如何按修改日期将文件分组到单独的文件夹中?

我有大量文件,我想根据年份将它们分组到文件夹中,并使用修改日期,以便确认。我在 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)
    }
}

相关内容