Bash 复制文件夹结构并合并子目录
我不确定在哪里发布这篇文章最合适,希望有人能提出建议,如果这是不正确的,我是一个很长时间的浏览器,但这是我的第一篇文章。无论如何 我需要自动将文件夹复制到新位置并合并子目录 我将使用ABC作为示例文本字符串,它表示公司名称,是一个常量值 目前的结构如下:Bash 复制文件夹结构并合并子目录,bash,applescript,directory,automator,robocopy,Bash,Applescript,Directory,Automator,Robocopy,我不确定在哪里发布这篇文章最合适,希望有人能提出建议,如果这是不正确的,我是一个很长时间的浏览器,但这是我的第一篇文章。无论如何 我需要自动将文件夹复制到新位置并合并子目录 我将使用ABC作为示例文本字符串,它表示公司名称,是一个常量值 目前的结构如下: 2012年工作 ABC12 001-099 ABC12-001 jpgs 生的 网 争吵 ABC12-002 ABC12-003 ABC12 100-199 ABC12200-299 2013年工作 2014年工作
- 2012年工作
- ABC12 001-099
- ABC12-001
- jpgs
- 生的
- 网
- 争吵
- ABC12-002
- ABC12-003
- ABC12-001
- ABC12 100-199
- ABC12200-299
- ABC12 001-099
- 2013年工作
- 2014年工作
下面的脚本部分满足了您的需要(我想!) 它会查找您选择的顶部文件夹中的每个“原始”文件夹(即包含所有“2012作业”、“2013作业”和…) 对于找到的每个“原始”文件夹,它会查看是否在同一级别已经存在一个“TIFF”文件夹(如果不存在,则创建它) 然后将所有文件从“raw”移动到“tiff”,最后删除空的“raw” 若要完成,您必须再次执行相同的操作,但要将“web”文件夹复制到“jpgs”中。您有两种方法: 1) 将“tell Finder”块移动到带有2个字符串参数(raw、TIFF)的子程序中,调整脚本以用参数替换每次出现的raw/TIFF。然后用(“raw”、“TIFF”)调用此例程,再次用(“web”、“jpgs”)调用此例程 2) 您只需复制/粘贴tell finder块并手动将“原始”/“TIFF”更改为“web”/“jpgs” 由你决定
警告:不要忘记在父文件夹的完整副本上运行此操作!
cp-r
?或rsync(如果是重复作业)我认为这对手动创建文件夹很有效,但我希望它遍历每个文件夹并复制到新位置,然后在最低级别合并文件夹,如果可以使用cp命令完成,请在回答上展开?
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