我有一个监视文件夹的 bash 脚本,如果文件夹中添加了某些内容,则脚本会将监视文件夹内的所有内容移动到定义的目的地。
问题:- 脚本无法通过 FileZilla (FTP) 将受监控文件夹中的文件移动到目标文件夹。如果您通过 shell 提示手动将文件移动到受监控文件夹,则脚本可以正常工作。FTP 是唯一无法正常工作的格式。
您知道这个问题可能是什么吗?
脚本如下:
inotifywait -m ~/folderA/fileA -e moved_to |
while read path action file; do
#echo "The file '$file' appeared in directory '$path' via '$action'"
# do something with the file
mv ~/folderA/fileA/* "/folderB/myNewDest"
done
答案1
首先,只inotifywait -e moved_to
监视文件已移动到目标目录,你忽略了对文件的监控书面或者覆盖例如,通过Filezilla
。添加-e modify -e create
到您的命令中,或者,除非您有令人信服的理由忽略某些inotifywait
事件,否则请丢弃所有-e whatever
选项。
其次,如果不在命令中引用文件,mv ~/folderA/fileA/* "/folderB/myNewDest"
则可能会被愚蠢的文件名所困扰,例如foo;rm -rf *
。我建议
find ~/folderA/fileA/ -maxdepth 0 -type f -print0 | \
xargs -0 mv --target-directory=/folderB/myNewDest --
其作用相同,但更安全。