Next: , Previous: , Up: Information about Files   [Contents][Index]


24.6.4 File Attributes

このセクションでは、ファイルの詳細な情報を取得する関数について説明します。それらの情報にはファイルの所有者やグループの番号、ファイル名の個数、inode番号、サイズやアクセス日時、変更日時が含まれます。

Function: file-newer-than-file-p filename1 filename2

この関数は、ファイルfilename1がファイルfilename2より新しい場合は、tをリターンする。filename1が存在しない場合はnilfilename1は存在するが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

以下の2つの関数のfilename引数がシンボリックリンクの場合、これらの関数はそれをリンクターゲットで置き換えません。しかしどちらの関数も、親ディレクトリーのすべての階層において、シンボリックリンクを再帰的にフォローします。

Function: file-attributes filename &optional id-format

この関数は、ファイルfilenameの属性(attributes)のリストをリターンする。オープンできないファイルが指定された場合は、nilをリターンする。オプション引数id-formatは、属性UIDおよびGID(以下参照)にたいして望ましいフォーマットを指定し、有効な値は'stringおよび'integerである。デフォルトは'integerだが、わたしたちはこれの変更を計画しているので、リターンされるUIDまたはGIDを使用する場合は、id-formatにたいして非nil値を指定するべきである。

リストの要素は順に:

  1. ディレクトリーにたいしてはt、シンボリックリンクにたいしては文字列(リンクされる名前)、テキストファイルにたいしてはnil
  2. そのファイルがもつ名前の個数。ハードリンクとして知られる代替え名は、関数add-name-to-fileを使用して作成できる(Changing Filesを参照)。
  3. ファイルのUIDで、通常は文字列。しかし、名前をもつユーザーに対応しない場合、値は整数。
  4. 同様に、ファイルのGID
  5. 最終アクセス時刻を表す、4つの整数(sec-high sec-low microsec picosec)からなるリスト(これはcurrent-timeの値と似ている。Time of Dayを参照されたい)。いくつかのFATベースのファイルシステムでは、最終アクセスの日付だけが記録されるので、この時刻には常に最終アクセス日の真夜中が保持されることに注意。
  6. 最終変更時刻を表す4つの整数からなるリスト(上記参照)。これは、ファイルのコンテンツが変更された最終時刻である。
  7. ステータスの最終変更時刻を表す4つの整数からなるリスト(上記参照)。これはファイルのアクセスモードビット、所有者とグループ、およびファイルにたいしてファイルのコンテンツ以外にファイルシステムが記録するその他の情報にたいする最終変更時刻である。
  8. ファイルのサイズ(バイト)。Lisp整数の範囲を超える大きさのサイズでは浮動小数点数。
  9. ls -l’で表示されるような、10個の文字、またはダッシュからなる文字列で表されるファイルのモード。
  10. 後方互換のために提供される不定値。
  11. ファイルのinode番号。可能な場合は整数。Emacs Lispの整数として表せる範囲より大きいinode番号は、整数で表現可能な値を得るために2^{16}で除され(high . low)という形式の値になる。ここでlowは下位16ビットである。それにたいしてさえinode番号が大きい場合、値は(high middle . low)という形式になる。ここでhighは上位ビット、middleは中位24ビット、lowは下位16ビットを保持する。
  12. そのファイルがあるデバイスのファイルシステム番号。その大きさにより、値は整数、またはinode番号と同じ様式のコンスセルとなる。この要素とファイルのinode番号を併せれば、システム上の2つを区別するに足る情報が得られる(2つのファイルがこれら両方の番号で同じ値をもつことはできない)。

たとえば、以下はfiles.texiのファイル属性である:

(file-attributes "files.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.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。

Function: file-nlinks filename

この関数は、ファイル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: , Previous: , Up: Information about Files   [Contents][Index]