Como posso executar scripts com base nas alterações que estão ocorrendo em uma pasta específica?

1

Para alterar o tamanho de uma imagem específica, uso o seguinte comando:

mogrify -geometry x50 my_image.png

Toda vez que eu pego uma nova tela de impressão, uma imagem é salva na minha pasta ~/Pictures . Gostaria de criar um script que assista à minha pasta Pictures e tome uma ação copiando uma versão de tamanho reduzido da minha nova imagem para uma pasta diferente no meu computador, por exemplo. ~/.icons/ ...

Sei que posso resolver esse problema usando cron , mas realmente não quero realizar ações em intervalos regulares de tempo. Eu quero um comando (ou um script) que possa descobrir o que é diferente em uma pasta baseada em logs ou algo assim. Isso é possível? Como posso fazer isso?

    
por Rafael Muynarsk 16.05.2018 / 15:29

2 respostas

1

Eu criei este script funcional que resolve meu problema usando inotify-tools . Então, eu estou deixando aqui, caso seja útil para outra pessoa.

#!/bin/bash

watchedFolder=~/Pictures
iconsFolder=~/.icons
imageGeometry=100

while [ true ]
do
   fileName=$(inotifywait -q -e create --format "%f" "$watchedFolder")
   if ! [ -d $iconsFolder ]; then mkdir -p $iconsFolder ; fi
   sleep 1s
   cp $watchedFolder/"$fileName" $iconsFolder
   mogrify -geometry x$imageGeometry $iconsFolder/"$fileName"
done

Salvar como, por exemplo, ~/automatedIcons.bash e torná-lo executável com chmod +x ~/automatedIcons.bash . Agora, se você executá-lo, ele já está funcionando, ele copiará cada nova imagem criada dentro da pasta Pictures para um novo local e alterará seu tamanho. Para que seja executado na inicialização, use crontab -e e escreva uma linha com a localização do script, por exemplo, @reboot /home/myUserName/automatedIcons.bash .

Este é apenas um script funcional. Então, se alguém tiver alguma sugestão sobre como melhorar o funcionamento, sinta-se à vontade para escrever nos comentários.

    
por 16.05.2018 / 21:33
0

Esta pergunta (ou semelhante) foi respondida em estouro de pilha

Diz principalmente que você precisa usar inotify-tools

    
por 16.05.2018 / 15:36