本帖已更新,请看下面的解决方案。
我需要检查文件夹中是否存在文件,该文件并不总是存在。
我做了一个这样的脚本:
#!/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; 菲 完毕