我不满意找到匹配字符串的文件,如下所示:
(remove-if-not (lambda (it)
(search "wildcard" (namestring it)))
(uiop:directory-files "./"))
;; I'll ignore case with str:contains?
;; https://github.com/vindarel/cl-str
Run Code Online (Sandbox Code Playgroud)
如何用unix风格的通配符搜索文件?
如果它不是内置的,我会喜欢uiop的解决方案.也许有Osicat或cl-fad(它似乎不是这样,文档经常说"非野性路径名").
如果可以使用双通配符以递归方式遍历目录(./**/*.jpg),则可以获得奖励.
编辑:我已经试过的变种(directory #p"./**/*.jpg"),它返回nil :(也试过#p".*jpg",#p"./.*jpg"...
(wild-pathname-p (pathname "*.jpg"))
(:WILD :WILD-INFERIORS)
(make-pathname :name :wild :type "jpg")
#P"*.jpg"
Run Code Online (Sandbox Code Playgroud)
以下通过jpg扩展获取文件,但它还不是一个合适的通配符:
(directory *)
(#P"/home/vince/cl-cookbook/AppendixA.jpg"
#P"/home/vince/cl-cookbook/AppendixB.jpg"
#P"/home/vince/cl-cookbook/AppendixC.jpg")
Run Code Online (Sandbox Code Playgroud)
关于路径名的文档和make-pathname:http://gigamonkeys.com/book/files-and-file-io.html(没有提到通配符)
restart-case我想在丢失输入文件期间向用户提供附加信息。
有没有一种便携式方法可以打印当前目录中的文件?