识别文件何时更改 - Bash

时间:2015-06-22 17:31:51

标签: bash shell unix

所以在我的bash shell脚本中,我让它在for循环中运行。在for循环中,我每次使用find "$myarray[i]" >> $tmp来查找某个目录。有时,它会在myarray[i]中找到变量,有时则不会。当它在myarray[i]中找到某些内容时,我希望它能够执行echo "<br>" >> $tmp。有没有办法让我在执行$tmp行后检查find是否已更改,以便我知道何时执行echo "<br>" >> $tmp行?

2 个答案:

答案 0 :(得分:1)

我会存储find的输出,如果非空,则回显换行符:

found=$(find . -name "${myarray[i]}")
if [[ -n $found ]]; then
    { echo "$found"; echo "<br>"; } >> "$tmp"
fi

答案 1 :(得分:1)

如果你的目标是在文件系统事件发生时采取行动(例如文件更新或目录创建),我就避免编写自定义轮询循环。相反,请使用专门为该用例创建的多个工具之一。

Linux工具&#34; inotify&#34;似乎很受欢迎,并且它有诸如inotify-tools之类的包装器,以便更容易从命令行调用。还有跨平台的Python软件包&#34; watchdog&#34;,.NET / mono工具&#34; System.IO.FileSystemWatcher&#34;,OSX内置实用程序&#34;文件夹操作&#34;,&#34; fswatch&#34;等。

很容易弄乱轮询,并且难以正确处理自动重启,异常文件名和文件系统错误等问题。创建特定于目的的工具是因为使用(简单)bash循环没有好办法。