특정 폴더에서 발생하는 변경 사항을 기반으로 스크립트를 어떻게 실행할 수 있나요?

특정 폴더에서 발생하는 변경 사항을 기반으로 스크립트를 어떻게 실행할 수 있나요?

특정 이미지의 크기를 변경하려면 다음 명령을 사용합니다.

mogrify -geometry x50 my_image.png

새로운 인쇄 화면을 찍을 때마다 이미지가 내 ~/Pictures폴더에 저장됩니다. 내 Pictures폴더를 감시하고 이미지의 새로운 축소 버전을 내 컴퓨터의 다른 폴더에 복사하는 작업을 수행하는 스크립트를 만들고 싶습니다 . 예를 들어 ~/.icons/...

이 문제에 대한 해결책을 사용할 수 있다는 것을 알고 있지만 cron정기적으로 조치를 취하고 싶지는 않습니다. 로그 등을 기반으로 폴더의 차이점을 파악할 수 있는 명령(또는 스크립트)이 필요합니다. 그게 가능합니까? 어떻게 해야 합니까?

답변1

나는 내 문제를 해결하기 위해 이 기능적 스크립트를 만들었습니다 inotify-tools. 그래서 다른 사람들에게 유용할 경우를 대비해 여기에 남겨둡니다.

#!/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

예를 들어 저장 ~/automatedIcons.bash하고 실행 가능하게 만드십시오 chmod +x ~/automatedIcons.bash. 이제 실행하면 이미 작동하며 Pictures폴더 내에 생성된 모든 새 사진을 새 위치에 복사하고 크기를 변경합니다. 부팅 시 실행되도록 하려면 crontab -e위의 스크립트 위치가 포함된 줄을 사용하고 작성합니다(예 @reboot /home/myUserName/automatedIcons.bash: .


이것은 단지 함수 스크립트일 뿐입니다. 따라서 작동 방식을 개선하기 위한 제안 사항이 있는 경우 댓글로 자유롭게 적어주세요.

답변2

이 질문(또는 유사한 질문)이 다음 위치에 게시되었습니다.스택 오버플로

기본적으로 다음을 사용해야 합니다.이노티파이 도구

관련 정보