2016-07-13 4 views
0

Я ищу, чтобы сделать рабочий процесс automator или applescript (но я еще не знаком с языком), который может использовать список имен (электронная таблица или .csv) для поиска в каталоге и его подкаталогах для этих конкретных имен файлов (с разными расширениями) и копирования этого изображения в папку, созданную для этих изображений.Applescript, Automator - Найти и копировать imgs в Dir/sub-dir

Я нашел скрипт, который, похоже, несколько похож на то, что мне нужно, но он не ищет в подкаталогах, поэтому я еще не нашел на нем никаких изображений.

После обширных исследований я нашел 2 разных сценария, которые кажутся мне такими, но ни один из них, похоже, не ищет подкаталоги. Ниже приведены два сценария, которые я пробовал. Если бы кто-нибудь мог помочь мне заставить их искать подкаталоги, я бы очень признателен!

Сценарий 1:

set thePhotos to paragraphs of (read (choose file with prompt "Choose a text file")) 
set theSourceFolder to (choose folder with prompt "Choose source folder") 
set theDestination to (choose folder with prompt "Choose destination folder") 
set dupeList to {} 
repeat with theName in thePhotos 
    try 
     set end of dupeList to alias ((theSourceFolder as text) & theName) 
    end try 
end repeat 

tell application "Finder" to duplicate dupeList to theDestination with replacing 

set theCount1 to (count of dupeList) as text 
set theCount2 to (count of thePhotos) as text 
display dialog (theCount1 & " of " & theCount2 & " items copied to " & (theDestination as text)) buttons {"OK"} 

Сценарий 2

set fileContents to read (choose file with prompt "Choose a comma-delimited text file") 
set theText to result 
set AppleScript's text item delimiters to "," 
set theTextItems to text items of theText 
set AppleScript's text item delimiters to {""} 
theTextItems 
set theSourceFolder to (choose folder with prompt "Choose source folder") as string 
set theDestination to (choose folder with prompt "Choose destination folder") 
repeat with theEPSName in theTextItems 
    tell application "Finder" 
     set theEPSFile to theSourceFolder & theEPSName 
     move file theEPSFile to folder theDestination with replacing 
    end tell 
end repeat 

Так что это позволяет мне выбрать .csv использовать, выберите папку для сохранения и выбрать каталог для поиска. Как я могу получить этот скрипт для поиска в подкаталогах? И кому-то, кто понимает Applescript, похоже, что он будет функционировать по мере необходимости?

Спасибо заранее! Я очень ценю любую помощь по этому поводу, так как это мой первый опыт в Applescript, но я очень рад этому научиться!

ответ

0

Это очень быстрое решение, использующее поиск оболочки и прожектора.

Скрипт создает строку поиска КРИТЕРИИ

'kMDItemFSName == picture1.png || kMDItemFSName == picture2.jpg || ...' 

затем выполняет поиск и копирует все файлы передавая найденные элементы в команде cp.

Возможно, существует оговорка, если список названий слишком длинный и превышает максимальную длину параметров оболочки.

set theNames to paragraphs of (read (choose file with prompt "Choose a text file" of type "txt")) 
set sourceFolder to quoted form of POSIX path of (choose folder with prompt "Choose source folder") 
set destinationFolder to quoted form of POSIX path of (choose folder with prompt "Choose destination folder") 

set nameList to {} 
repeat with aName in theNames 
    set end of nameList to "kMDItemFSName == " & quoted form of aName 
end repeat 
set {TID, text item delimiters} to {text item delimiters, " || "} 
set nameFilter to quoted form of (nameList as text) 
set text item delimiters to TID 
do shell script "mdfind -onlyin " & sourceFolder & " -0 " & nameFilter & " | xargs -0 -J {} cp {} " & destinationFolder 
Смежные вопросы