Next: Extended Attributes, Previous: Truenames, Up: Information about Files [Contents][Index]
このセクションではファイルの詳細な情報を取得する関数について説明します。それらの情報にはファイルの所有者やグループの番号、ファイル名の個数、inode番号、サイズやアクセス日時、変更日時が含まれます。
この関数はファイルfilename1がファイルfilename2より新しければt
をリターンする。filename1が存在しなければnil
、filename1は存在するがfilename2が存在しなければt
をリターンする。
以下の例では、aug-19の書き込みが19日、aug-20の書き込みが20日、ファイルno-fileは存在しないものとする。
(file-newer-than-file-p "aug-19" "aug-20") ⇒ nil
(file-newer-than-file-p "aug-20" "aug-19") ⇒ t
(file-newer-than-file-p "aug-19" "no-file") ⇒ t
(file-newer-than-file-p "no-file" "aug-19") ⇒ nil
この関数はファイルfilenameの属性(attributes)のリストをリターンする。オープンできないファイルが指定された場合は、nil
をリターンする。指定されたファイルの属性にアクセスできなければnil
をリターンする。この関数はシンボリックリンクをフォローしない。オプション引数id-formatは属性UIDとGID(以下参照)にたいして望ましいフォーマットを指定する。有効な値は'string
と'integer
。デフォルトは'integer
だが、わたしたちはこれの変更を計画しているので、リターンされるUIDやGIDを使用する場合にはid-formatにたいして非nil
値を指定すること。
GNUプラットフォームではこの関数はロックファイル処理時はアトミックである。別のプロセスによりファイルシステムが同時に変更された場合には、この関数は変更の前か後のいずれかのファイル属性をリターンする。それ以外ならこの関数はアトミックではなく競合状態を検知したらnil
、または以前とカレントが混ざったファイル属性をリターンするかもしれない。
このリスト内の要素にアクセスするためにアクセッサ関数が提供される。このアクセッサ以下の要素の記述とともに示される。
リストの要素は順に:
t
、シンボリックリンクにたいしては文字列(リンクされる名前)、テキストファイル(file-attribute-type
)にたいしてはnil
。
file-attribute-link-number
)。ハードリンクとして知られる代替え名は関数add-name-to-file
を使用して作成できる(Changing Filesを参照)。
file-attribute-user-id
。しかし名前をもつユーザーに対応しなければ値は整数。
file-attribute-group-id
)。
(sec-high sec-low microsec
picosec)
からなるリスト(file-attribute-access-time
。これはcurrent-time
の値と似ている。Time of Dayを参照)。値はファイルシステムのタイムスタンプの精度に切り詰められる。たとえばFATベースのいくつかのファイルシステムでは最終アクセスの日付だけが記録されるので、この時刻には常に最終アクセス日の真夜中が保持されることに注意。
file-attribute-modification-time
。上記参照)。これはファイルのコンテンツが変更された最終時刻。
file-attribute-status-change-time
。上記参照)。これはファイルのアクセスモードビット、所有者とグループ、およびファイルにたいしてファイルのコンテンツ以外にファイルシステムが記録するその他の情報にたいする最終変更時刻。
file-attribute-size
)。Lisp整数の範囲を超える大きさのサイズでは浮動小数点数。
file-attribute-modes
)。
file-attribute-inode-number
)。可能な場合には整数。Emacs
Lispの整数として表せる範囲より大きいinode番号は、整数で表現可能な値を得るために2^{16}で除されて(high
.
low)
という形式の値になる。ここでlowは下位16ビット。それにたいしてさえinode番号が大きければ値は(high
middle
.
low)
という形式になる。ここでhigh
は上位ビット、middleは中位24ビット、lowは下位16ビットを保持する。
file-attribute-device-number
)。その大きさにより値は整数、またはinode番号と同じ様式のコンスセル。この要素とファイルのinode番号を併せればシステム上の2つを区別するのに足る情報が得られる(2つのファイルがこれら両方の番号で同じ値をもつことはできない)。
たとえば以下はfiles-ja.texiのファイル属性:
(file-attributes "files-ja.texi" 'string) ⇒ (nil 1 "lh" "users" (20614 64019 50040 152000) (20000 23 0 0) (20614 64555 902289 872000) 122295 "-rw-rw-rw-" t (5888 2 . 43978) (15479 . 46724))
この結果を解釈すると:
nil
ディレクトリーでもシンボリックリンクでもない。
1
(カレントデフォルトディレクトリー内で名前files-ja.texiは)単一の名前をもつ。
"lh"
名前"lh"のユーザーにより所有される。
"users"
名前"users"のグループ。
(20614 64019 50040 152000)
最終アクセスがOctober 23, 2012, at 20:12:03.050040152 UTC。
(20000 23 0 0)
最終更新がJuly 15, 2001, at 08:53:43 UTC。
(20614 64555 902289 872000)
最終ステータス変更がOctober 23, 2012, at 20:20:59.902289872 UTC。
122295
バイト長は122295バイト(しかしマルチバイトシーケンスが含まれていたり、EOLフォーマットがCRLFなら122295文字は含まれないかもしれない)。
"-rw-rw-rw-"
所有者、グループ、その他にたいして読み取り、書き込みアクセスのモードをもつ。
t
単なるプレースホルダーであり何の情報ももたない。
(5888 2 . 43978)
inode番号は6473924464520138。
(15479 . 46724)
ファイルシステムのデバイス番号は1014478468。
この関数はファイルfilenameがもつ名前(ハードリンク)の個数をリターンする。ファイルが存在しなければ、この関数はnil
をリターンする。シンボリックリンクはリンク先のファイルの名前とは判断されないので、この関数に影響しないことに注意。この関数はシンボリックリンクをフォローしない。
$ ls -l foo* -rw-rw-rw- 2 rms rms 4 Aug 19 01:27 foo -rw-rw-rw- 2 rms rms 4 Aug 19 01:27 foo1
(file-nlinks "foo") ⇒ 2
(file-nlinks "doesnt-exist") ⇒ nil
Next: Extended Attributes, Previous: Truenames, Up: Information about Files [Contents][Index]