Existe uma maneira de verificar se há alterações em uma pasta / arquivo (inclui adicionar arquivos, excluir arquivos, alterações em arquivos, ...). A 'Ação da pasta' no Automator está apenas verificando se algum arquivo foi adicionado recentemente.
Existe uma maneira de verificar se há alterações em uma pasta / arquivo (inclui adicionar arquivos, excluir arquivos, alterações em arquivos, ...). A 'Ação da pasta' no Automator está apenas verificando se algum arquivo foi adicionado recentemente.
Respostas:
Você pode adicionar uma ação "Executar script do shell" com o comando:
find <directory> -newermm <reference_file>
Isso fornecerá todos os arquivos e diretórios <directory>
que foram alterados desde a última alteração de <reference_file>
. Apenas certifique-se de modificar <reference_file>
cada vez que executar o script do Automator.
Consulte também a página do manual de localização (entre man find
no terminal) para obter mais opções. A localização é muito poderosa, e refinar ainda mais sua pesquisa geralmente é uma questão de algumas opções adicionais. Por exemplo, para procurar apenas diretórios modificados após <reference_file>
:
find <directory> -type d -newermm <reference_file>
Se a versão que acompanha o OSX não for suficiente, você também pode tentar a versão que vem findutils
(brew, macports etc.), que deve ter um pouco mais de recursos.
Então, da última vez que verifiquei, o Automater está usando o Applescript em segundo plano para criar scripts para suas ações. O Applescript não tem muita profundidade. Embora ele possa obter a lista de arquivos em um diretório (e, portanto, você possa descobrir quando algo é excluído), não acredito que possa calcular alterações em um arquivo.
O que você realmente precisa aproveitar são as notificações do sistema de arquivos. E como isso é uma besta, eu aceitaria o conselho do kraymer e usaria o launchd. Possui ganchos para executar sempre que o conteúdo de uma pasta é alterado. O Lingon (veja também sua página desatualizada do SourceForge ) é um ótimo aplicativo para ajudar as pessoas a entrar no launchd. Você pode escrever seu script / aplicativo de automação para fazer o que planejava quando seu diretório foi modificado e apenas fazer com que a tarefa launchd chame isso.
Você pode verificar uma resposta minha , mas parece que você quer
fs_usage -f filesys
O Launchd não é o caminho a seguir para alterações de arquivos, fs_usage usa a máquina subjacente que potencializa o foco.
Edição: Estou totalmente errado aqui. O Launchd possui exatamente essa funcionalidade necessária, ou seja: faça algo em uma alteração de arquivo ou diretório.
Você cria um arquivo .plist.
Grite "XML SUX PARA ARQUIVOS CONF!" (Realmente faz.)
e você deseja usar uma ou ambas as teclas abaixo em seu trabalho de inicialização.
WatchPaths <array of strings>
This optional key causes the job to be started if any one of the listed
paths are modified.
QueueDirectories <array of strings>
Much like the WatchPaths option, this key will watch the paths for modi-
fications. The difference being that the job will only be started if the
path is a directory and the directory is not empty.