ディレクトリ内の新しいファイルを検索し、コマンドを実行するスクリプト

ディレクトリ内の新しいファイルを検索し、コマンドを実行するスクリプト

ディレクトリに、数個、あるいは数百個の XML ファイルがあります。新しいファイルが見つかったときにスクリプトを実行したいのですが、唯一の大きな問題は、inotifywait などを使用できないことです。インストール権限の制限のためです。(権限はありますが、サプライヤーによって保守されているため、契約により許可されていません)。したがって、基本的な Linux ツールを使用してスクリプトを使用できますが、新しいツールをインストールすることはできません。もう 1 つ注意点があります。これは、かなり古い OS、opensuse 10.2 用に作成する必要があります。

誰かが私を正しい方向に導いてくれることを願っています。

よろしくお願いいたします

答え1

以下は、ループ内で「find -newer」を使用する簡単な bash スクリプトの短い例です。

#!/bin/bash
while [ 1 ]; do
  newfiles=`find /tmp -newer /tmp/.my_marker 2>/dev/null`
  touch /tmp/.my_marker
  if [ -n "$newfiles" ]; then
    echo "found files $newfiles"
  fi
  sleep 5
done

この例では、スクリプトは、毎回更新される /tmp/.my_marker の変更時刻を使用して、前回のループ以降に変更された /tmp 内のファイルを検索します。ループは、次のチェックの前に 5 秒間スリープします。

このアクションは見つかったファイルの単なるエコーであり、代わりに独自のアクションを配置することもできます。

関連情報