擅长:python、mysql、java
<p>如果文件在处理后没有被修改,一个选项是<strong>记住最新处理的文件</strong>,然后使用<code>find</code>的<code>-newer</code>选项检索尚未处理的文件。在</p>
<pre><code>find $rawdatapath -name '*.gz' -newer $(<latest_file) -exec process.sh {} \;
</code></pre>
<p>在哪里进程.sh看起来像</p>
^{pr2}$
<p>这是未经测试的。在考虑实施这一策略之前,请注意不必要的副作用。在</p>
<p>如果一个老套的/快速的脏的解决方案是可以接受的,<strong>一个有趣的替代方案是在文件权限中对状态(已处理或未处理)进行编码,例如在组读取权限位。假设您的<code>umask</code>是<code>022</code>,因此任何新创建的文件都具有<code>644</code>的权限,在处理文件后将权限更改为<code>600</code>,并使用<code>find</code>的<code>-perm</code>选项检索尚未处理的文件。在</p>
<pre><code>find $rawdatapath -name '*.gz' -perm 644 -exec process.sh {} \;
</code></pre>
<p>在哪里进程.sh看起来像</p>
<pre><code>#!/bin/env bash
echo "processing, new: $1"
#unzip file and import into mongodb
chmod 600 $1
</code></pre>
<p>这也是未经测试的。在考虑实施这一策略之前,请注意不必要的副作用。在</p>