创建子目录并按日期组织文件

Ric*_*ist 9 scripting shell-script date rename files

我有一些从我的安全摄像头复制的文件目录,我想按文件日期将它们组织到子目录中。例如;

-rwxrwxrwx 0 root root 4935241 Jul 19  2012 DSCN1406.JPG
-rwxrwxrwx 0 root root 4232069 Jul 19  2012 DSCN1407.JPG
-rwxrwxrwx 0 root root 5015956 Jul 20  2012 DSCN1408.JPG
-rwxrwxrwx 0 root root 5254877 Jul 21  2012 DSCN1409.JPG
Run Code Online (Sandbox Code Playgroud)

我想要一个运行以查看该目录中文件的脚本,然后创建 3 个所需的目录,命名为:

drwxrwxrwx 1 root root     0 Sep  2 16:49 07-19-2012
drwxrwxrwx 1 root root     0 Sep  2 16:49 07-20-2012
drwxrwxrwx 1 root root     0 Sep  2 16:49 07-21-2012
Run Code Online (Sandbox Code Playgroud)

然后将文件移动到适当的目录中。有没有人对实现此目的的良好脚本方式有任何建议?

Gil*_*il' 21

在 Linux 和 Cygwin 上,您可以使用date -r读取文件的修改日期。

for x in *.JPG; do
  d=$(date -r "$x" +%Y-%m-%d)
  mkdir -p "$d"
  mv -- "$x" "$d/"
done
Run Code Online (Sandbox Code Playgroud)

(我对日期使用明确、标准且易于排序的 YYYY-MM-DD 格式。)