Common Lisp中的路径名,其中包含通配符的文件名

时间:2015-05-05 20:27:32

标签: common-lisp filenames wildcard clisp pathname

字符*?用作路径名中的通配符。如何引用具有?作为其实际字符之一的文件名?例如: [18]> (wild-pathname-p #p"foo") NIL [19]> (wild-pathname-p #p"foo?") T 所以参考文件名" foo?"不能这样做。我试图用反斜杠来逃避?,但这并没有奏效。我尝试使用\u3f\u003f进行unicode,但这不起作用。

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

在运行Mac OS X 10.10.3的Mac上:Clozure CL,SBCL和LispWorks使用*编写路径名,如下所示:

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

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