Next: , Previous: General output formatting, Up: ls invocation


10.1.6 ファイルのタイムスタンプの書式化

デフォルトで,ファイルのタイムスタンプは短縮した様式でリストアップされ ます.ほとんどのロカールで‘2002-03-30 23:45’のようなタイムスタン プが使用されます.しかし,デフォルトのPOSIXロカールでは,昔 のタイムスタンプに対し‘Mar 30 2002’のような日付を使用し,最近 のタイムスタンプに対し,‘Mar 30 23:45’のように年が無い日付と時間 を使用します.

タイムスタンプは,六カ月未満のものを最近のもの(recent)と考え,未 来のものは日付がつきません.タイムスタンプが今日の場合は,最近のものの 形式でリストアップされず,タイムスタンプが未来のものは,おそらく時間の 歪みの問題があることを意味し,makeのようにファイルのタイムス タンプに依存しているプログラムでは問題になる可能性があります.

以下のオプションで,ファイルのタイムスタンプを出力する方法を変更します.

--time-style=style
タイムスタンプをstyleの形式でリストアップします.styleは以 下の一つにします.
+format
formatを使用してタイムスタンプをリストアップし,formatdateの書式化引数のように解釈されます(see date invocation).例えば,--time-style="+%Y-%m-%d %H:%M:%S"lsは‘2002-03-30 23:45:56’のようにタイムスタンプをリスト アップします.date同様,formatの解釈ではLC_TIME ロカールカテゴリの影響を受けます.

formatに二つの書式化文字列が,改行で分けられて存在する場合,前者 は最近のものではないファイルに使用され,後者は最近のファイルに使用され ます.出力列を並べたい場合,二つの書式の一つにスペースを挿入する必要が あるかもしれません.

full-iso
完全なISO 8601の日付,時間,タイムゾーンを,ナノ秒の精度を使 用してタイムスタンプをリストアップし,例えば,‘2002-03-30 23:45:56.477817180 -0700’のようにします.この形式は‘+%Y-%m-%d %H:%M:%S.%N %z’と等価です.

オペレーティングシステムで利用可能なすべての情報を含んでいる時間の出力 になるので,これは役に立ちます.例えば,ファイルが最新かどうかを決定す るため,GNU makeは完全なタイムスタンプを使用するの で,makeの動作を解釈する助けとなります.

long-iso
ISO 8601の日付,分単位の時間でリストアップし,例えば, ‘2002-03-30 23:45’のようにします.これらのタイムスタンプは, ‘full-iso’のタイムスタンプより短く,毎日の作業では通常十分に利用 できるものです.この形式は‘%Y-%m-%d %H:%M’と等価です.
iso
最近のものではないタイムスタンプはISO 8601(例えば, ‘2002-03-30 ’)で,最近のものは,月,日,時間,そして分でリストアッ プします(例えば,‘03-30 23:45’).これらのタイムスタンプは, ‘long-iso’のタイムスタンプより悪くなりますが,より小さなスペース で同じ情報を提供し,また簡潔なのでlsの出力は伝統的な80列の出 力行に適しています.以下の二つのlsの呼び出しは等価です.
               newline='
               '
               ls -l --time-style="+%Y-%m-%d $newline%m-%d %H:%M"
               ls -l --time-style="iso"

locale
タイムスタンプをロカール依存の様式でリストアップします.例えば,フィン ランドのロカールでは,最近のものではないタイムスタンプを‘maalis 30 2002’のように,そして最近のもののタイムスタンプを‘maalis 30 23:45’のようにリストアップするでしょう.ロカール依存のタイムスタンプは, 通常,‘iso’のタイムスタンプよりスペースを使用し,また,ロカールの 慣習は幅広く,プログラムでパースするのはより難しくなりますが,多くの人々 はそれで読み易くなります.

LC_TIMEロカールカテゴリはタイムスタンプの書式を指定します.デフォ ルトのPOSIXロカールは,‘Mar 30 2002’と‘Mar 30 23:45’のようなタイムスタンプを使用します.このロカールでは,以下の二つ のlsの呼び出しは等価です.

               newline='
               '
               ls -l --time-style="+%b %e  %Y$newline%b %e %H:%M"
               ls -l --time-style="locale"

それ以外のロカールでは動作は異なります.例えばドイツのロカールでは, --time-style="locale"--time-style="+%e. %b %Y $newline%e. %b %H:%M"と等価で,‘30. Mär 2002 ’と ‘30. Mär 23:45’のようなタイムスタンプを生成するでしょう.

posix-style
LC_TIMEロカールがPOSIXの場合,タイムスタンプを POSIXロカールで,それ以外ではstyleのタイムスタンプでリ ストアップします.例えば,デフォルトのスタイル‘posix-long-iso’で は,POSIXロカールのときは,‘Mar 30 2002’と‘Mar 30 23:45’のようなタイムスタンプで,それ以外では‘2002-03-30 23:45’ のようなタイムスタンプでリストアップします.

--time-styleオプションのデフォルト値を,環境変数 TIME_STYLEを用いて指定することが可能です.TIME_STYLEが設定 されていない場合,デフォルトのスタイルは‘posix-long-iso’です. GNU Emacs 21とそれ以降では,ISOの日付をパースする ことは可能ですが,それより古いEmacsのバージョンではそうではないので, 古いバージョンのEmacsを使用していて,POSIX以外のロカールを指 定している場合,‘TIME_STYLE="locale"’を設定する必要があるかもしれ ません.