4

SBCL (ディレクトリ "*") は、拡張子に基づいて一部のファイル名を除外しています。すべてのファイル、または特にパターンに一致するすべてのファイルを返すようにするにはどうすればよいですか (bash グロービングのように)

(ディレクトリ "*") ; すべてではなく一部のファイルを一覧表示します (ディレクトリ " MyFile ") ; 一部のファイルを一覧表示しますが、ここでも拡張子でフィルタリングします

私には無視されているように見える拡張子... 少なくとも *.lisp はリストされていません。

Fedora18 上の SBCL 1.1.2-1.fc18

4

3 に答える 3

4

グロブからパス名への変換は、実装とシステムに依存します。パス名は、ファイル名ファイルの種類(拡張子)を区別します。just を指定すると*、Linux の SBCL はこれを「任意のファイル名ですが、拡張子は空でなければなりません」と解釈します。すべての*.*ファイルを指定すると言えます。inは、ファイル名と拡張子の分離として解釈されるため、リテラルのドットを含むファイル名だけではないことを意味します。.*.**.*

于 2013-07-21T20:23:00.697 に答える
2

Lisp はパスを使用し*.XXX、ファイルのタイプを呼び出します。(directory "*")いくつかの「タイプ」をフィルタリングしています(まだすべてを理解していません)が、freenode.net IRCユーザーpjbが指摘しています

(concatenate 'list (directory "*.*") (directory "*")  (directory "*/"))

そしてそれはより良いです。(まだ完全ではありませんが、まずまずで、正しい方向を指しています。)

于 2013-07-21T00:55:22.970 に答える