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


26.10 ディレクトリーのコンテンツ

ディレクトリーとはファイルの一種であり、さまざまな名前のファイルを含んでいます。ディレクトリーはファイルシステムの機能です。

Emacsはディレクトリー内のファイル名をLispのリストとして一覧したり、シェルコマンドlsを使用してバッファー内にファイル名を表示することができます。後者の場合には、Emacsはオプションで各ファイルに関する情報も表示でき、それはlsコマンドに渡すオプションに依存します。

Function: directory-files directory &optional full-name match-regexp nosort count

この関数はディレクトリーdirectory内のファイルの名前のリストをリターンする。デフォルトではリストはアルファベット順。

この関数はfull-nameが非nilならファイルの絶対ファイル名、それ以外なら指定されたディレクトリーにたいする相対ファイル名をリターンする。

match-regexpが非nilなら、この関数は非ディレクトリー部分に正規表現へのマッチを含むファイル名だけをリターンして、それ以外のファイル名はリストから除外される。case(大文字小文字)を区別するファイルシステムでは、caseを区別する正規表現マッチングが行われる。

nosortが非nilならdirectory-filesはリストをソートしないので、取得するファイル名に特定の順序はない。最大限の可能なスピードを得る必要がありファイル処理順を気にしなければこれを使用する。ユーザーから処理順が可視なら、名前をソートすれば多分ユーザーはより幸せになるだろう。

countが非nilなら最初のcount個のファイル名、またはすべてのファイル名のいずれか早いほうをリターンする。countは0より大な整数であること。

(directory-files "~lewis")
     ⇒ ("#foo#" "#foo.el#" "." ".."
         "dired-mods.el" "files-ja.texi"
         "files-ja.texi.~1~")

directoryが読み取り可能なディレクトリー名でなければエラーがシグナルされる。

Function: directory-empty-p directory

このユーティリティー関数は与えられたdirectoryがアクセス可能なディレクトリーかつ何のファイルも含まない(空ディレクトリー)場合にはtをリターンする。ディレクトリー内のファイルとして‘.’や‘..’をリターンするシステムでは、それらは無視される。

ディレクトリーへのシンボリックリンクはディレクトリーとみなされる。シンボリックリンクと区別する方法についてはfile-symlink-pを参照のこと。

Function: directory-files-recursively directory regexp &optional include-directories predicate follow-symlinks

regexpにマッチする名前をもつdirectory配下のすべてのファイルをリターンする。この関数はベースネーム(basename: 先行するディレクトリー部分を除外したファイル名)がregexpにマッチするファイルを、directoryとそのサブディレクトリーを再帰的に検索して、マッチしたファイルの絶対ファイル名(absolute file namesを参照)のリストをリターンする。ファイル名は深さ優先順でリターンされ、それは親ディレクトリーの前に任意のサブディレクトリー内のファイルが配置されることを意味する。加えて各ディレクトリー内で見つかったファイルはベースネームにもとづいてソートされる。デフォルトではregexpにマッチする名前のディレクトリーはリストから省略されるが、オプション引数include-directoriesが非nilならそれらも含まれる。

デフォルトではすべてのサブディレクトリーが含まれる。predicatetならサブディレクトリーを含める際のエラー(たとえばそのユーザーでは読み取り不可の場合)は無視される。nilt以外なら、1つのパラメーター(サブディレクトリー名)を受け取り、そのディレクトリーを含める場合には非nilをリターンする関数であること。

デフォルトではサブディレクトリーへのシンボリックリンクはフォローしないが、follow-symlinksが非nilならフォローする。

Function: locate-dominating-file file name

fileから開始してディレクトリーツリー階層を上方にname (文字列)というディレクトリーを検索して、最初に見つけたディレクトリーをリターンする。fileがファイルならファイルのディレクトリーが検索の開始位置、それ以外ならfileは検索を開始するディレクトリーであること。この関数は開始ディレクトリーを調べて、それからその親ディレクトリー、更にその親ディレクトリー、...のようにnameというディレクトリーを見つけるか、あるいはnameが見つけることなくファイルシステムのロートディレクトリーに到達するまで検索を行う。後者の場合にはnilをリターンする。

引数nameは述語関数でもよい。この述語は関数により検査される、file (fileがディレクトリーでない場合でも)から開始されるすべてのディレクトリーにたいして呼び出される。この述語は1つの引数(ファイルかディレクトリー)で呼び出されて、それが検索しているディレクトリーなら非nilをリターンすること。

Function: directory-files-and-attributes directory &optional full-name match-regexp nosort id-format count

これはどのファイルを報告するか、およびファイル名を報告する方法においてdirectory-filesと似ている。しかしこの関数はファイル名のリストをリターンするかわりに、各ファイルごとにリスト(filename . attributes)をリターンする。ここでattributesは、そのファイルにたいしてfile-attributesがリターンする値。オプション引数id-formatは、file-attributesの対応する引数と同じ意味をもつ(Definition of file-attributesを参照)。

Constant: directory-files-no-dot-files-regexp

この正規表現は‘.’と‘..’を除いたすべてのファイル名にマッチする。より正確にはこれら2つを除いたすべての空文字列以外の部分にマッチする。これはdirectory-filesおよびdirectory-files-and-attributesmatch-regexp引数として有用。

(directory-files "/foo" nil directory-files-no-dot-files-regexp)

ディレクトリー‘/foo’が空ならnilをリターンする。

Function: file-expand-wildcards pattern &optional full

この関数はワイルドカードパターンpatternを展開して、それにマッチするファイル名のリストをリターンする。

絶対ファイル名としてpatternが記述されると値も絶対ファイル名になる。

patternが相対ファイル名で記述されていれば、それはカレントデフォルトディレクトリーにたいして相対的に解釈される。通常はリターンされるファイル名もカレントデフォルトディレクトリーにたいする相対ファイル名になる。しかしfullが非nilなら絶対ファイル名がリターンされる。

Function: insert-directory file switches &optional wildcard full-directory-p

この関数はlsswitchesに対応するフォーマットで、(カレントバッファー内に)ディレクトリーfileのディレクトリーリストを挿入する。これは挿入したテキストの後にポイントを残す。switchesにはオプション文字列、または個別のオプションを表す文字列リストを指定できる。

引数fileにはディレクトリー、またはワイルドカード文字を含むファイル名を指定できる。wildcardが非nilならfileはワイルドカードを伴うファイル指定として扱われることを意味する。

full-directory-pが非nilなら、ディレクトリーリストにたいしてディレクトリーの完全なコンテンツ表示を要求することを意味する。fileがディレクトリーでスイッチに‘-d’が含まれないときには、tを指定すること(lsへのオプション‘-d’は、ディレクトリーのコンテンツではなくファイルとしてディレクトリーを表示するよう指定する)。

ほとんどのシステムでは、この関数は変数insert-directory-programの名前のディレクトリーリスト用プログラムを実行することにより機能する。wildcardが非nilなら、ワイルドカード展開するためにshell-file-nameで指定されるシェルの実行も行う。

MS-DOSとMS-Windowsシステムは標準的なUnixプログラムlsを欠くので、この関数はLispコードでlsをエミュレートする。

技術的な詳細としてはswitchesにロングオプション‘--dired’が含まれる際に、insert-directoryはdiredのためにこれを特別に扱う。しかし他のオプションと同様、通常は等価なショートオプション‘-D’が単にinsert-directory-programに渡されるだけである。

Variable: insert-directory-program

この変数の値は関数insert-directory用にディレクトリーリストを生成するプログラムである。この値はLispコードでこのリストを生成するシステムでは無視される。