本帖已更新,请看下面的解决方案。
我需要检查文件夹中是否存在文件,该文件并不总是存在。
我做了一个这样的脚本:
#!/bin/sh 虽然是真的;做 文件=/路径/到/文件 如果 [[ "$file" = *文件名* ]] 然后 echo "$ 文件存在" 别的 回声“没有礼物” 菲 睡觉 3 完毕
完美运行,除了“$file is present”不断重复,直到我删除或移动文件。我可以在 "echo "$file is present" 之后插入哪个命令来停止警报但继续检查这个文件(例如,当文件再次可用时)?
谢谢你。
由于我要到 8 小时才能添加答案,所以我在这里发布我的解决方案:
无论如何,我已经使用此脚本解决了:将文件的时间与当前日期进行比较,然后使用“触摸”将日期更改为 10 秒前:
#!/bin/sh
虽然是真的
做
cd $(目录名 "$0")
当前=$(密码)
cd /boot/home/下载
最后=$(ls -t | 头 -n1)
name=$(basename "$last")
文件日期=$(日期 -r "$last" +%G%m%d%H%M%S)
当前日期=$(日期+%G%m%d%H%M%S)
if [ "$filedate" -eq "$currentdate" ]
然后
echo "$name" "存在"
touch -d '-10 seconds' "$name"
菲
完毕
现在可以根据文件名独立工作!提醒我每个新文件一次,并继续关注该文件夹:-)
为了保留脚本的整个历史,下面是 iamauser 的脚本。我对这个脚本做了一些改进:现在它会提醒我文件夹中的每个新文件(独立于名称、种类等),并提醒我删除文件:-)
#!/bin/bash
cd /启动/主页
文件名=$(ls -t | 头 -n1)
tstamp=$(stat --print "%Y" "$filename")
虽然是真的;做
prev=$(ls "/boot/home/Downloads" | tr '\n' '\n' > /tmp/prev.txt)
检查=$(ls -t /boot/home/Downloads | head -n1)
如果 [ !-d "$文件名" ]; 然后
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/Diff.txt)
alert --idea "/boot/home/Downloads: $check 是此文件夹中最新的文件。";
alert --idea "/boot/home/Downloads: $lost 已删除。";
tstamp=$(stat --print "%Y" "$filename")
别的
睡觉 3;
菲
完毕