【问题标题】:I need a script to repeatedly poll through a directory tree, find all newly modified files, and execute a command on each such file我需要一个脚本来反复轮询目录树,找到所有新修改的文​​件,并对每个这样的文件执行命令
【发布时间】:2014-03-05 09:48:44
【问题描述】:

我需要编写一个脚本来反复轮询目录树,查找所有新修改的文​​件,并对每个此类文件执行命令(例如,加密、归档等)

“新修改的文​​件”是指自上次轮询以来修改过的文件。

我指定了“bash”标签,但它可以是任何 shell(在 Cygwin 下运行)。

我想我可以重命名已经处理过的文件;但我想知道是否有更清洁的解决方案。

【问题讨论】:

标签: bash shell cygwin sh


【解决方案1】:
dirname="/home/me/xxx"
lockfile="/tmp/me.lockfile.$$"

find $dirname -type f | xargs command
touch $lockfile

while true
do
    find $dirname -type f -newer $lockfile | xargs command
    touch $lockfile
    sleep 1
done

请注意,此解决方案存在问题 - 在 find 调用和锁定文件的触摸之间存在竞争条件,但这对于大多数实际用途来说可能已经足够了。

如果金钱或生命受到威胁,您将需要想出更强大的东西

【讨论】:

  • 谢谢!我喜欢!我不认为多线程在这里是一个问题,因为我只能运行这个进程的一个实例。不过,第一个“touch $lockfile”是个问题,因为我想在每次脚本重新启动时从我离开的地方继续。
猜你喜欢
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 2023-03-02
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2012-05-18
相关资源
最近更新 更多