Command-Line
如何根據特定文件夾上發生的更改執行腳本?
要更改特定圖像的大小,我使用以下命令:
mogrify -geometry x50 my_image.png
每次我拍攝新的列印螢幕時,都會在我的
~/Pictures
文件夾中保存一張圖像。我想製作一個腳本來監視我的Pictures
文件夾並採取行動將我的新圖像的縮小版本複製到我電腦上的不同文件夾中,例如~/.icons/
…我知道我可以使用 來解決這個問題
cron
,但我真的不想定期採取行動。我想要一個命令(或腳本),它可以根據日誌或類似的東西找出文件夾的不同之處。那可能嗎?我該怎麼做?
我創建了這個功能腳本,使用
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
將其另存為 eg
~/automatedIcons.bash
並使用chmod +x ~/automatedIcons.bash
. 現在,如果您執行它,它已經開始工作了,它會將Pictures
文件夾內創建的每張新圖片複製到新位置並更改其大小。要讓它在啟動時執行,請在上面crontab -e
寫一行腳本的位置,例如@reboot /home/myUserName/automatedIcons.bash
.這只是一個功能腳本。因此,如果有人對改進其工作方式有任何建議,請隨時在評論中寫下。