5

字符*?用作路径名中的通配符。如何引用具有?实际字符之一的文件名?例如: [18]> (wild-pathname-p #p"foo") NIL [19]> (wild-pathname-p #p"foo?") T 所以指的是文件名“foo?” 不能这样做。我试图?用反斜杠来逃避,但这没有用。我尝试使用\u3for去 unicode \u003f,但这没有用。

如何引用包含通配符作为其名称一部分的文件:如何探测、打开它等?

4

3 回答 3

3

这取决于实现,但对于某些人来说,反斜杠确实有效。但是因为名称字符串是字符串,要得到一个带有反斜杠的字符串,你必须用另一个反斜杠来转义反斜杠。因此,例如,"foo?"被转义为"foo\\?",而不是"foo\?"

上次我检查时,在 CLISP 中,无法引用名称中带有通配符的文件。我的解决方案是避免使用 CLISP。

于 2015-05-05T20:37:47.120 回答
1

在我运行 Mac OS X 10.10.3 的 Mac 上:Clozure CL、SBCL 和 LispWorks 使用*如下方式编写路径名:

#P"/private/tmp/test.\\*"

不过,它们可能在其他一些细节上有所不同。

于 2015-05-06T16:33:04.060 回答
0

SBCL 支持(make-pathname :directory "" :name file)将 a 转义string为适当的pathname.

于 2021-11-17T09:41:48.237 回答