Este é o roteiro:
set d to do shell script "date +%d-%m-%Y"
tell application "Finder"
set dir to POSIX file ("/Volumes/Xsan/PathTo/Folder") as alias
repeat with f in entire contents of dir
if comment of f does not start with "Archived" then
set comment of f to "Archived " & d
set label index of f to 2
end if
end repeat
end tell
Meu problema é que estou executando isso em uma pasta com milhares de imagens e pastas. O Finder atinge cerca de 90% do uso da CPU e leva cerca de 40 segundos POR ARQUIVO/PASTA para definir o comentário e o rótulo.
Existe alguma otimização que alguém possa sugerir. Ou alternativamente, uma alteração no código que permitirá uma implementação 100% Bash script desta tarefa? (Se isso ajudar com velocidade).
Sinto que pode haver algo no comando "conteúdo inteiro" que está atrapalhando as coisas.
Como antes de fazer uma alteração em um determinado arquivo ou pasta, ele verifica novamente as tags "Arquivado" em TODOS os arquivos após fazer uma única alteração. Achei que isso seria armazenado em cache na memória no início.
Adoraria qualquer ideia que você possa ter!
Saúde,
James
editar: O sistema é Snow Leopard Server 10.6.8, Xserve2,1
Responder1
Experimente isto:
set time1 to do shell script "perl -e 'use Time::HiRes qw(time); print time'"
set d to do shell script "date +%d-%m-%Y"
tell application "Finder"
set dir to POSIX file "/Volumes/Xsan/PathTo/Folder" as alias
set eContents to entire contents of dir
repeat with f in my eContents
if comment of f does not start with "Archived" then
set comment of f to "Archived " & d
set label index of f to 2
end if
end repeat
end tell
set time2 to do shell script "perl -e 'use Time::HiRes qw(time); print time'"
set millisec to (round ((time2 - time1) * 1000))
ou
set time1 to do shell script "perl -e 'use Time::HiRes qw(time); print time'"
set d to do shell script "date +%d-%m-%Y"
tell application "Finder"
set dir to POSIX file "/Volumes/Xsan/PathTo/Folder" as alias
set eContents to every file of (entire contents of dir) whose comment does not start with "Archived"
repeat with f in my eContents
set comment of f to "Archived " & d
set label index of f to 2
end repeat
end tell
set time2 to do shell script "perl -e 'use Time::HiRes qw(time); print time'"
set millisec to (round ((time2 - time1) * 1000))