En supposant que vous ne prévoyez pas de dupliquer d'innombrables milliers de fichiers, voici un simple script pour dupliquer des fichiers d'un dossier à un autre.
Tout d'abord, il génère une liste de fichiers dans le dossier source. Il parcourt ensuite chaque élément de la liste et, si la taille du fichier est comprise dans la plage, il ajoute le fichier à une liste correspondante. Une fois cette opération terminée, il duplique les fichiers correspondants dans le dossier de destination.
tell application "Finder"
set srcFol to ((path to downloads folder as text) & "here:")
set dstFol to ((path to desktop as text) & "there:")
set everyFile to (get files of folder srcFol as alias list)
set sizedFiles to {}
repeat with aFile in (a reference to everyFile)
set sz to size of aFile
if sz is greater than 200000 and sz is less than 299000 then
set end of sizedFiles to aFile
set label index of aFile to 4 -- used to highlight matching files during testing
end if
end repeat
duplicate sizedFiles to dstFol with replacing
end tell
NB : la ligne 'set label index' met simplement une étiquette de couleur sur chaque fichier. Je l'utilise pendant les tests pour mettre en évidence les fichiers qui sont dupliqués. Mettez-la en commentaire une fois que vous avez confirmé que tout fonctionne. Si vous ne souhaitez pas que les fichiers existants soient écrasés, supprimez la ligne "set label index". with replacing
.
Si vous prévoyez de dupliquer des dossiers contenant de nombreux fichiers (ou des sous-dossiers), vous pouvez envisager de prendre les mesures suivantes do shell script
avec quelque chose comme ditto ou rsync.