これは、さまざまなプラットフォームでの非標準機能の典型的なケースのようです。
簡単に言えば、ファイルの変更時刻を秒単位の UNIX タイムスタンプとして取得するための、普遍的に (または少なくとも広く) サポートされている方法が必要です。
現在、これを行うさまざまな方法を知っていますstat
が、ほとんどはプラットフォーム固有のものです。たとえばstat -c %Y $file
、一部では機能しますが、代わりに使用する OS X (およびおそらく他の FreeBSD システム) では機能しませんstat -f %m $file
。
同様に、一部のプラットフォームは をサポートしていますdate -r $file +%s
が、OS X/FreeBSD は、このオプションが、他のプラットフォームのような参照ファイル オプションではなく、UNIX タイムスタンプを取得するため-r
の代替手段のように見えるため、サポートしていません。+%s
私がよく知っているもう 1 つの方法はfind
、-printf
オプションを使用することですが、これも広くサポートされていません。私が知っている最後の方法は解析ですls
。これは、やらなければならないことは不快であるだけでなく、信頼できる (または少なくとも信頼すべき) ものではないと私は信じています。
では、ファイルの変更時刻を取得するためのより互換性のある方法はありますか? 現在、さまざまなバリエーションをstat
スクリプトに投入し、ステータスがゼロで終了するまでそれらを実行していますが、成功したコマンドをキャッシュして将来最初に実行したとしても、これは理想とはほど遠いものです。