GNU find .extension ファイルと -exec を実行すると、新しい .extension ファイルが作成されます。

GNU find .extension ファイルと -exec を実行すると、新しい .extension ファイルが作成されます。

ここに問題があります。誰か説明していただくか、参考文献を提供していただけますか。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;

繰り返しになりますが、実際にどれが書き込まれているかはまだわかりませんので、それを個別に解決する必要があります。

関連情報