1
我想遍历给定的目录并创建一个以.jpg结尾的文件列表。遍历目录树
(setq files (list))
(defun jpg-list(directory)
(dolist (node (directory-files directory t))
(if (file-directory-p node)
(if (not
(string= (substring node (- (string-width node) 1)) "."))
(jpg-list node))
(if (string-match ".jpg" node)
(setq files (cons node files)))))
files)
我想这样做,而不使用外部变量(文件)。在elisp中做这件事的惯用方式是什么?
感谢,这解决了我的问题。但是对于不同的情况,编写这种循环的习惯方式是什么?使用setq遍布各处似乎没有功能代码? – 2009-09-24 19:54:21
如果你想要一个更“功能性”的方法,你可能想用lambda表示你的(目录文件)mapcar,它递归地调用你的函数在subdirs上。 – aaron 2009-09-24 21:58:57
对,mapcar功能更强大,但并没有解决他的问题。你需要像'remove-if','remove'等''cl'中的例程,这完全取决于你在做什么。惯用的方式是完全使用“目录文件”。接下来的方法是通过“let”使用局部变量,你可以编写一个递归例程,使用''cl'函数等等等等。注意:Emacs不起作用,它是充满了各种各样的副作用... – 2009-09-24 22:48:19