2016-05-09 10 views
-1

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 Работа
    • ...

Что мне нужно сделать, это скопировать эту структуру на новое место , но объедините jpg и веб-папки в один из названных jpgs, например, и raw и tiffs в другую папку с именем tiffs.

Я создал AppleScript для создания структуры папок, но это, очевидно, все просто пустые папки, было бы намного проще просто скопировать то, что уже есть, и начать заново, открыть любые предложения, вы эксперты! Благодаря

Изображение показывает структуру до и как я хочу это после того, как: Before and After

+0

'cp -r '? – andlrc

+0

или rsync (если это повторяющееся задание) – sznowicki

+0

Я думаю, что это будет работать для создания папок вручную, но я хочу, чтобы он просматривал каждую папку и копировал ее в новое место, а затем объединять папки на самом низком уровне, если это можно сделать используя команду cp, пожалуйста, расширьте свой ответ? –

ответ

0

Рев скрипт делает частично то, что вам нужно (я думаю!).

Он ищет каждый «сырой» в верхней выбранной папке (то есть папка, содержащее все «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 

Для завершения, вы должны сделать то же самое еще раз, но с «веб» папки, которые будут скопированы в «JPGs». У вас есть 2 способа сделать это:

1) переместите блок «tell Finder» в подпрограмму с двумя параметрами строк (raw, tiffs), отредактировав скрипт, чтобы заменить каждое вхождение raw/tiffs параметром. то вы вызываете эту процедуру с («raw», «tiffs») и снова с («web», «jpgs»)

2) вы просто копируете/вставляете блок подсказки и изменяете «raw»/«tiffs» "вручную„сети“/„JPGs“

до вас ...

Внимание: не забудьте запустить это на полную COPIE вашей родительской папки!