Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 根据文件名YYYY-MM的开头,将文件从一个文件夹移动到文件夹中的多个子文件夹_Macos_Applescript_Automator - Fatal编程技术网

Macos 根据文件名YYYY-MM的开头,将文件从一个文件夹移动到文件夹中的多个子文件夹

Macos 根据文件名YYYY-MM的开头,将文件从一个文件夹移动到文件夹中的多个子文件夹,macos,applescript,automator,Macos,Applescript,Automator,为了优化我的摄影工作流程,我希望根据文件名的开头自动将图片和视频从(a)主文件夹移动到一组文件夹的子文件夹中,所有这些都基于年份和月份,即YYYY-MM。理想情况下,每次新文件出现在/a定义的主文件夹中时,它都应该运行,但如果这不简单,我可以使用droplet/app手动运行或安排运行 我不是程序员,也不做脚本编写,但当外行有明显的逻辑时,我能理解大多数事情。我已经阅读了许多类似的帖子,但没有一篇提供了一个明显的答案,我可以使用和/或找出如何适应我试图对我的文件和文件夹层次结构所做的事情。从我所

为了优化我的摄影工作流程,我希望根据文件名的开头自动将图片和视频从(a)主文件夹移动到一组文件夹的子文件夹中,所有这些都基于年份和月份,即YYYY-MM。理想情况下,每次新文件出现在/a定义的主文件夹中时,它都应该运行,但如果这不简单,我可以使用droplet/app手动运行或安排运行

我不是程序员,也不做脚本编写,但当外行有明显的逻辑时,我能理解大多数事情。我已经阅读了许多类似的帖子,但没有一篇提供了一个明显的答案,我可以使用和/或找出如何适应我试图对我的文件和文件夹层次结构所做的事情。从我所看到的,人们是如何用Applescript或其他脚本语言做这些事情的(?),对于合适的人,我认为/希望这是一个简单的问题

除了视觉上,我没有很好的方法来解释我要做的事情,所以我开始了。如果你有任何问题,请告诉我。谢谢


为此,我将使用带有运行Shell脚本操作的自动程序文件夹操作,设置如下图所示,同时使用以下示例Shell脚本代码替换运行Shell脚本操作中的默认代码:

p=“$HOME/Photos”
对于“$@”中的f;做
[-f“${f}”]| |继续
fn=“${f##*/}”
[${fn}=~^[0-9]{4}-[0-9]{2}-[0-9]{2}.*]| |继续
y=“${fn:0:4}”
m=“${fn:5:2}”
mkdir-p“${p}/${y}/${y}-${m}/${y}-${m}-排序”| |退出
mv-n“${f}”“${p}/${y}/${y}-${m}/${y}-${m}-排序”
完成
为了测试示例shell脚本代码,我创建了照片照片,以对我的主页文件夹中的文件夹进行排序,并将后者分配给我的自动机工作流中的文件夹操作

从“照片”文件夹中没有任何子文件夹或“照片排序”文件夹中的文件开始,我将以下文件拖放到“照片排序”文件夹中:

  • 2020-12-31-file.jpg
  • 2021-01-12-file.mp4
  • 2021-01-16-file.jpg
  • 2021-02-24-file.jpg
  • 2021-03-25-file.mov
执行此操作后,会触发自动程序文件夹操作,将文件移动到适当的分层文件夹结构,如下所示:

Photos % tree
.
├── 2020
│   └── 2020-12
│       └── 2020-12 - To Sort
│           └── 2020-12-31 - file.jpg
└── 2021
    ├── 2021-01
    │   └── 2021-01 - To Sort
    │       ├── 2021-01-12 - file.mp4
    │       └── 2021-01-16 - file.jpg
    ├── 2021-02
    │   └── 2021-02 - To Sort
    │       └── 2021-02-24 - file.jpg
    └── 2021-03
        └── 2021-03 - To Sort
            └── 2021-03-25 - file.mov

10 directories, 5 files
Photos %


注意事项:

在这个特定的用例中,编写shell脚本代码要比编写AppleScript代码容易得多,这也是我选择这条路线的原因

由于
-n
选项,编码的
mv
命令不会覆盖现有文件。如果要覆盖现有文件,请从
mv
命令中删除
-n
选项

shell脚本将检查放入分配给文件夹操作的文件夹中的内容是否为文件,或者如果删除了多个项目,将继续查找下一个已删除的项目

它检查文件名是否为例如YYYY-MM-DD…格式,或者如果删除了多个查找程序,则继续到下一个删除的项目

根据需要创建目标分层文件夹结构,然后将目标文件移动到相应的目标文件夹

用于显示照片文件夹内容的
tree
命令不是默认的macOS命令

Shell脚本变量命名法:

  • f=完全限定路径名
  • fn=带扩展名的文件名
  • y=年
  • m=月