手动文件夹观察器进行传输?

手动文件夹观察器进行传输?

由于某种原因,传输的watch-dir功能对我不起作用(我尝试了一些找到的“解决方案”,但没有任何效果)。因此,我为自己制作了一个脚本来提供该脚本(请注意,我将此脚本放入crontab每小时运行一次的脚本中,因此我需要为所有内容添加完整路径):

#!/bin/bash

prefix='/home/user'
folder=$prefix'/path/to/watched/dir'
cd $folder

count=$(ls -1 *.torrent 2>/dev/null | wc -l)
if [ $count != 0 ];then
    echo $count torrents files found
    for torrent in '*.torrent'; do
        echo adding $torrent
        transmission-remote -n 'transmission:transmission' -a $folder/"$torrent"
        rm $folder/$torrent
    done
else
    echo no torrents found
fi

我从这个脚本得到的是,如果只有 1 个 torrent 文件,它就可以工作。但如果有 2 个或更多,则仅添加其中 1 个,所有这些都将被删除,并且该行echo adding $torrent显示所有种子。

我究竟做错了什么?

答案1

我怀疑这条线

for torrent in '*.torrent'; do

没有扩展到文件列表,因为您已经将其括在引号中。每次$torrent使用后它都会扩展,但这会立即将所有文件传递给传输。

将此行重写为

for torrent in *.torrent; do

我也推荐使用nullglob.看for 循环 glob 事故

此外,inotify-wait还可用于在目录中创建文件时触发 shell 脚本。

相关内容