したがって、最初の1000回ダウンロードしてから5秒の長さの5000オーディオファイルをダウンロードするには、次のようにします。
find . -iname "*.wav" -exec play {} \;
コマンドを最初に実行したときにあった1000個のファイルのみを再生しますか、それともexecが完了できるよりもファイルがより速くダウンロードされるため、5000個のファイルをすべて再生しますか?
ベストアンサー1
これは実装によって異なります。標準理論:
検索中のディレクトリ階層からファイルが削除または追加されるかどうかは指定されません。探す検索にファイルを含めます。
ディレクトリレイアウトとファイルシステムの動作によっては、両方の動作が発生する可能性があると思います。find
エントリを読み取るためにディレクトリを開いた後、新しく追加されたエントリが返されても、readdir
このfind
問題は処理されます。しかし、これも明示されていませんPOSIX:
最後の呼び出し
opendir()
時以降にファイルが削除されるかディレクトリに追加された場合、後続の呼び出しがrewinddir()
そのファイルのエントリを返すかどうかreaddir()
は指定されません。
少なくともmacOSでGNU検索とBSD検索を使用すると、動作はディレクトリ内のすべてのエントリを一度に読み取るようです。
% (sleep 5; touch abc) & find . -exec sleep 5 \; -print
[1] 57727
.
[1] + 57727 done ( sleep 5; touch abc; )
./foo
./bar
どのように見つからないかを確認してくださいabc
。しかし、最初のものがsleep
減少すると、find
再帰は次のようになります。.
後ろに終わったsleep
:
% rm abc; (sleep 2; touch abc) & find . -exec sleep 5 \; -print
[1] 57971
[1] + 57971 done ( sleep 2; touch abc; )
.
./abc
./foo
./bar
したがって、ファイルが別のサブディレクトリにダウンロードされた場合、find
実行後にダウンロードしたファイルの一部は再生されますが、一部は再生されないことがあります。