2015-06-17 5 views

उत्तर

0

f का उपयोग करना:

(defun aj-fetch-latest (path) 
    (let ((e (f-entries path))) 
    (car (sort e (lambda (a b) 
        (not (time-less-p (aj-mtime a) 
            (aj-mtime b)))))))) 
(defun aj-mtime (f) (let ((attrs (file-attributes f))) (nth 5 attrs))) 
6

निर्मित API का उपयोग करके और साथ ही प्राप्त कर सकते हैं:

(defun latest-file (path) 
    "Get latest file (including directory) in PATH." 
    (car (directory-files path 'full nil #'file-newer-than-file-p))) 

(latest-file "~/.emacs.d") ;; => "/Users/xcy/.emacs.d/var" 

आप भी सब-निर्देशिका के अंतर्गत फ़ाइलें की जरूरत है, directory-files-recursively बजाय directory-files का उपयोग करें। यदि आप निर्देशिका को बहिष्कृत करना चाहते हैं, तो file-directory-p का उपयोग कर फ़ाइल/निर्देशिका सूची को पहले फ़िल्टर करें।

+0

ध्यान दें कि इस एल्गोरिदम को 'N * लॉग (एन) * डिस्क एक्सेस की आवश्यकता है, जहां निर्देशिका में फाइलों की संख्या' N' है। – sds

+0

@sds मैंने खुद को सॉर्ट करने के बजाय सीधे 'निर्देशिका-फाइल' का उपयोग करके अपना जवाब अपडेट कर दिया है। – xuchunyang

+1

'फ़ाइल-नई-से-फ़ाइल-पी' डिस्क को दो बार एक्सेस करता है। – sds

संबंधित मुद्दे