【问题标题】:Copy folder structure and merge sub directories复制文件夹结构并合并子目录
【发布时间】:2016-09-04 13:17:28
【问题描述】:

enter image description here我不知道在哪里最好发布这个,希望有人能告诉我这是不是正确的,我已经浏览了很长时间但这是我的第一篇文章。反正..

我需要自动将大量文件夹复制到新位置并合并子目录。

我将使用 ABC 作为示例文本字符串,它代表公司名称并且是一个常量值。

目前的结构是这样的:

  • 2012 年工作

    • ABC12 001-099
      • ABC12-001
        • jpgs
        • 原始
        • 网络
        • tiffs
      • ABC12-002
      • ABC12-003
      • ...
    • ABC12 100-199
    • ABC12 200-299
  • 2013 年工作

    • ...
  • 2014 年职位
    • ...

我需要做的是将此结构复制到一个新位置,但将 jpgs 和 web 文件夹合并到一个名为 jpgs 的文件夹中,并将 raw 和 tiffs 合并到另一个名为 tiffs 的文件夹中。

我创建了一个 AppleScript 来创建文件夹结构,但这些显然都是空白文件夹,复制已有的内容并重新开始会更容易,欢迎任何建议,你是专家!谢谢

图像显示了之前的结构以及之后我想要的结构: Before and After

【问题讨论】:

  • cp -r <source> <dest>?
  • 或 rsync(如果是经常性工作)
  • 我认为这适用于手动创建文件夹,但我希望它遍历每个文件夹并复制到新位置,然后在最低级别合并文件夹,如果可以使用cp 命令请扩展你的答案?

标签: bash applescript directory automator robocopy


【解决方案1】:

下面的脚本可以部分满足您的需要(我认为!)。

它会在您选择的顶部文件夹中查找每个“原始”文件夹(即包含所有“2012 年工作”、2013 年工作...的文件夹)

对于找到的每个“原始”文件夹,它会查看在同一级别是否已经存在“tiffs”文件夹(如果不存在,则创建它)。

然后它将所有文件从“原始”移动到“tiffs”。最后,它会删除空的“raw”。

set TopFolder to choose folder with prompt "Select parent folder to process"

tell application "Finder"
set RawsFolder to every folder of entire contents of TopFolder whose (name is "raw")
repeat with aFolder in RawsFolder
    set ParentFolder to container of aFolder -- get upper folder
    set TiffFolder to (ParentFolder as string) & "tiffs"
    if not (exists TiffFolder) then make new folder in ParentFolder with properties {name:"tiffs"}
    set FilesRaw to every file of aFolder --get all files from raw folder
    move FilesRaw to folder TiffFolder -- move them to tiffs folder
    delete aFolder -- delete the raw folder
end repeat
end tell

要完成,您必须再次执行相同的操作,但将“web”文件夹复制到“jpgs”中。你有两种方法可以做到这一点:

1) 将“tell Finder”块移动到具有 2 个字符串参数(raw、tiffs)的子例程中,调整脚本以用参数替换每次出现的 raw/tiffs。然后你用 ("raw", "tiffs") 和 ("web","jpgs") 调用这个例程

2) 您只需复制/粘贴tell finder 块并将“raw”/“tiffs”手动更改为“web”/“jpgs”

由你决定...

警告:不要忘记在父文件夹的完整副本上运行它!

【讨论】:

    猜你喜欢
    • 2020-05-21
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多