【发布时间】:2013-09-04 11:12:08
【问题描述】:
本帖已更新,请看下方解决方案。
我需要检查文件夹中是否存在文件,但该文件并不总是存在。
我做了一个这样的脚本:
#!/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 removed."; tstamp=$(stat --print "%Y" "$filename") 别的 睡觉 3; 菲 完毕【问题讨论】:
-
你能举个例子吗?
-
这可行,但会消耗您的处理能力或炸毁您的驱动器。尝试在循环结束时添加至少 10 秒的睡眠 (
sleep 10)。