连续获取文件,但仅发出一次警报

乔瓦84

此帖已更新,请在下面查找解决方案。

我需要检查文件夹中是否存在文件,但并不总是存在。

我做了这样的脚本:

#!/ bin / sh为
true;do 
file = / path / to / file
如果[[“” $ file“ = * filename *]]
回显” $ file存在“
否则
回显”不存在“ 
fi
睡眠3
完成

完美地工作,除了不断重复“ $ file present”这一事实,直到我删除或移动文件为止。我可以在“ echo“ $ file is present”之后插入哪个命令来停止警报,但继续检查该文件(例如,何时该文件再次可用)?

谢谢你。

由于我要等到8个小时才能添加答案,因此我在这里发布了我的解决方案:

无论如何,我已经解决了使用以下脚本的问题:将文件的时间与当前日期进行比较,然后使用“触摸”将日期更改为10秒前:


    #!/ bin / sh为
    true,
    执行
    cd $(目录名“ $ 0”)
    current = $(pwd)
    cd / boot / home / downloads 
    last = $(ls -t | head -n1)
    name = $(basename“ $ last “] 
    filedate = $(日期-r” $ last“ +%G%m%d%H%M%S)当前
    日期= $(日期+%G%m%d%H%M%S)
    如果[” $ filedate“ -eq” $ currentdate“]
    然后
    回显” $ name“”存在“ 
    touch -d'-10秒'” $ name“ 
    fi
    完成

现在可以正常使用,并且与文件名无关!提醒我有关每个新文件的信息,并继续监视该文件夹:-)

为了保留脚本的整个历史记录,下面是iamauser的脚本。我对该脚本进行了一些改进:现在,它会警告我文件夹中的每个新文件(名称,种类等均是如此),并且还会提醒我已删除的文件:-)


    #!/ bin / bash                                                                                                                                                                                          
    cd / boot / home 

    filename = $(ls -t | head -n1)                                                                                                                                                                                      
    tstamp = $(stat --print“%Y”“ $ filename”)为                                                                                                                                                            
    true;
     如果[[
    prev = $(ls“ / boot / home / Downloads” | tr'\ n''\ n'> /tmp/prev.txt)
    检查| $(ls -t / boot / home / Downloads | head -n1)进行检查
-d“ $ filename”]; 然后
    after = $(ls“ / boot / home / Downloads” | tr'\ n''\ n'> /tmp/after.txt)echo 

            “不存在”; 
            睡5;                                                                                                                                                    
        elif [[“” $ filename“ ==” $ filename“ && $ tstamp -ne $(stat --print”%Y“” $ filename“)]]]; 然后
    睡眠2
    差异= $(comm -2 -3“ /tmp/after.txt”“ /tmp/prev.txt">/tmp/Diff.txt)
    丢失= $(cat / boot / common / cache / tmp /差                                                                                                              
            alert --idea“ / boot / home / Downloads:$ check是该文件夹中的最新文件。” 
            alert --idea“ / boot / home / Downloads:$丢失了。”;                                                                                                                                                                 
            tstamp = $(stat --print“%Y”“ $ filename”)                                                                                                                                                        
        否则                                                                                                                                                                                            
            睡3;                                                                                                                                                                                    
        连接                                                                                                                                                                                              
    完成

iamauser

这样的事情可能会起作用。我正在检查文件的timstamp,以检查文件夹中是否有相同文件名的新副本。

#!/bin/bash                                                                                                                                                                                         

filename="/path/to/file"                                                                                                                                                                                     
tstamp=$(stat --print "%Y" "$file")                                                                                                                                                                 
while true; do                                                                                                                                                                                      
    if [ ! -f "$filename" ]; then                                                                                                                                                                       
        echo "Not present";
        sleep 5;                                                                                                                                                             
    elif [[ "$filename" == "myfile" && $tstamp -ne $(stat --print "%Y" "$filename") ]]; then                                                                                                              
        echo "$filename is present";                                                                                                                                                                    
        tstamp=$(stat --print "%Y" "$filename")                                                                                                                                                         
    else                                                                                                                                                                                            
        sleep 3;                                                                                                                                                                                    
    fi                                                                                                                                                                                              
done   

我通过在脚本运行时触摸文件名来测试脚本,每次触摸时,它都会打印出来$filename is present

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅显示一次警报

来自分类Dev

如何使警报仅出现一次

来自分类Dev

Azure警报仅触发一次

来自分类Dev

SwiftUI –警报仅显示一次

来自分类Dev

引导警报仅工作一次

来自分类Dev

引导警报仅显示一次

来自分类Dev

AFNetworkReachabilityManager仅发出一次RACSignal

来自分类Dev

如何使Javascript警报仅显示一次?

来自分类Dev

聚焦时仅显示一次警报

来自分类Dev

AlarmManager,setRepeat,但仅显示一次警报

来自分类Dev

jQuery Slideup和Bootstrap的警报(仅显示一次)

来自分类Dev

AlarmManager,setRepeat,但仅显示一次警报

来自分类Dev

如何在jQuery中仅显示一次警报

来自分类Dev

一次获取文件大小和md5哈希,仅读取一次文件

来自分类Dev

获取当前位置,但仅一次

来自分类Dev

每个属性仅获取一次

来自分类Dev

mousedown事件不是连续的,仅运行一次

来自分类Dev

对连续流仅反应一次的模式

来自分类Dev

如何仅连续附加一次事件处理程序

来自分类Dev

每60秒发出一次警报线程警告

来自分类Dev

表格行选择方法发出警报的次数多于一次

来自分类Dev

如何在JavaScript forEach函数中发出一次警报?

来自分类Dev

页面加载后5秒,一次向msg发出警报

来自分类Dev

django值列表仅获取一次值

来自分类Dev

如何仅获取一次变量中的对象总数?

来自分类Dev

登录后仅获取一次常规数据?

来自分类Dev

django值列表仅获取一次值

来自分类Dev

在Android上每个应用程序启动时仅显示一次警报

来自分类Dev

资源(Azure Logic App)上的Azure警报仅被触发一次