Verificando alterações de pasta / arquivo usando o Automator?

9

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.

Saneef
fonte
Eu não acho que isso seja nativamente possível com o Automator. Você provavelmente poderia fazer algo com alguns scripts (e as ações de script, se precisar que funcione no Automator), mas seria necessário executar o fluxo de trabalho para detectar alterações desde a última execução.
Jtjacques
3
Você olhou para launchd? cf stackoverflow.com/questions/1515730/...
kraymer

Respostas:

5

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 findno 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.

m000
fonte
1

Não sei como fazer isso com o Automator, mas há um aplicativo na App Store chamado Folder Watch que pode fazer o que você está pedindo.

Kris
fonte
1

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.

Staros
fonte
1

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.
chiggsy
fonte