日付/時刻をファイル名の一部として使用するための標準形式を検索しましたが、何も思いつきませんでした。
私の質問は2つの部分です:
タイムスタンプを使用しています 一意を強制する ファイル名の悪い習慣ですか?
作成日から時間を取得してファイル名(file0001.bak、file0002.bakなど)をシリアル化できますが、タイムスタンプを含めるだけでmv 2011-01* somewhere/
などのファイル操作を実行できます。このタイプの命名システムを使用することの欠点はありますか?
私が使用している形式はYYYY-mm-dd_HH-MM-SS
です。
使用するべきより良いフォーマットはありますか?
このフォーマットでは、ファイルシステムの互換性、str_to_date_parsingの問題などを考慮する必要がありますか?
ありがとう!
編集:
enforce一意性ビットは省略したいと思うかもしれません。これは、cronjobを使用してバックアップを生成するシングルユーザーであるためです(同時実行性の問題はないはずです)。
ISO 8601形式(2013-04-01T13:01:02)を検討する必要があります。はい、これらの基準があります。コロンとハイフンは省略できます。
私が通常使用するフォーマット文字列は%Y%m%dT%H%M%S
収量20130401T130102。要件によっては、左から値を省略しています。 bashスクリプトでは、次のような行で日付を取得します。
LOGDATE=$(date +%Y%m%dT%H%M%S)
日付/時刻をファイル名の一部として使用するための標準形式を検索しましたが、何も思いつきませんでした。
私の質問は2つの部分です:
一意のファイル名を強制するためにタイムスタンプを使用することは悪い習慣ですか?
大丈夫です。
作成日から時間を取得し、ファイル名(file0001.bak、file0002.bakなど)をシリアル化できます
それらに順番に番号を付けることは、より多くの作業です。タイムスタンプは、増加するが非連続的な番号付けと考えてください。
ただし、タイムスタンプを含めるだけで、mv 2011-01 *などのファイル操作をどこかで実行できます。このタイプの命名システムを使用することの欠点はありますか?
いいえ、それは常に行われています。
私が使用している形式はYYYY-mm-dd_HH-MM-SSです。
時系列順に並べ替えられるため、これは良いことです。ハイフンを入力する方が簡単だからといって、アンダースコアを失うことになります。
使用すべきより良いフォーマットはありますか?
あんまり。
アプリケーションによって異なります。時々、あなたが説明したようなタイムスタンプを使うことができます。名前の衝突が懸念される場合は、 [〜#〜] guid [〜#〜] ジェネレータを使用できます。
ISO 8601形式を使用すると、ファイルを日付順に並べ替えることもできます(すべてのファイルに同じプレフィックスが付いていると想定)。
http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/date_and_time_format.htm
http://en.wikipedia.org/wiki/ISO_8601
使用している形式は問題ありませんが、一意性が必要で時間に他の意味がない場合、アプリケーションが複数のユーザーによって同時に使用され、それらすべてが同じファイルを作成する場合、アプリケーションで同時実行の問題が発生する可能性があります。フォルダ。一意性だけが必要な場合は、GUIDを生成し、中括弧やダッシュなどの無効な文字を削除して、ファイル名として使用することを検討してください。