ここに問題があります。誰か説明していただくか、参考文献を提供していただけますか。1 時間前から読み進めていますが、答えが見つかりません。
たとえば、プロセス 1 がディレクトリのプールで処理を行っているとします。プロセス 1 はディレクトリを選択し、その中に .csv ファイルなどを作成します。プロセス 1 がこのディレクトリ 1 で処理を続行している間、.csv ファイルが追加されるため、不完全になります。その後、プロセス 1 はディレクトリ 2 に移動し、これを繰り返します。
さて、process1 が終了したディレクトリ内の csv で何かを行いたいと思います。理想的には、どのディレクトリが終了したかを確認し、それらに対して process2 を実行する必要があります。しかし、私の無限の知恵で、私は次のようにします:
ディレクトリを検索* -type f -name '*.csv' -exec process2
私の想定では、find はまず find の呼び出し時点までに存在するすべての csv を検索し、次にそれらの csv に対してのみ -exec process2 を実行し、find の呼び出し後に作成された csv は無視します。
どうやら私は間違っていたようです(まだ確信はありません)。誰か説明してもらえますか?
ありがとう。
答え1
-exec を使用する場合find
、各ファイルが見つかるたびに exec プロセスが呼び出されます。スナップショットから作業する場合は、次のようにした方がよいでしょう。
find directories* -type f -name '*.csv' > /tmp/filelist
cat /tmp/filelist | while read file; do
process2 $file # I'm assuming you want to pass the filename somehow...
done;
繰り返しになりますが、実際にどれが書き込まれているかはまだわかりませんので、それを個別に解決する必要があります。