私は Linux で簡単なことだと思うことをやろうとしています。さまざまなテスト プログラムを実行する bash スクリプトがあり、現在のディレクトリ内のどのファイルがテスト プログラムによって作成されたかを確認したいと考えています。だから私はこのようなことをしています:
touch タイムスタンプ ファイル テストを実行する find -newer timestamp-file -type f > list-of-files rm -f タイムスタンプファイル
find -newer の粒度が悪いことが判明したため、通常、テスト プログラムによって生成された一部のファイルがタイムスタンプ ファイルよりも古いものとして表示されます。それで、私はこれを試しました:
ls -tr1 | sed '1,/timestamp-file/d'
同じリストを生成します。これは通常は機能しますが、常に機能するとは限りません。テストによって生成されたファイルがタイムスタンプ ファイルよりも古いものとして表示されるという状況に陥ります。
ありがとう!
PS 別の方法として、ディレクトリの 2 つのスナップショット (テスト プログラムの実行前と実行後) を取得し、それらを比較することで、これを実現できます。最初のリストにない 2 番目のリストのファイルはすべて、テスト プログラムによって作成されたものでなければなりません (バックグラウンド ジョブや、他のユーザーがディレクトリに書き込むことには関心がありません)。しかし、このメソッドは私が望むものではありません。テストを実行する前に出力ファイルが削除されなかった場合 (削除されるはずですが、削除されない場合もあります)、このメソッドは、テストプログラムが実行される前にディレクトリにあったため、テストプログラム。