जवाबों:
यह बिल्कुल उसी पर निर्भर करता है, जिसका अर्थ है "खोला", लेकिन सामान्य तौर पर, हाँ। सामान्य रूप से दर्ज तीन टाइमस्टैम्प हैं:
mtime
- फ़ाइल सामग्री बदलने पर अद्यतन। यह ज्यादातर मामलों में "डिफ़ॉल्ट" फ़ाइल समय है।ctime
- फ़ाइल या उसके मेटाडेटा (स्वामी, अनुमतियाँ) को बदलने पर अद्यतनatime
- फ़ाइल पढ़ी जाने पर अपडेट की गईतो, आम तौर पर, आप जो देखना चाहते हैं, वह atime
फ़ाइल का है। आप के साथ stat
या साथ मिल सकता है ls
। आप ऐसा करने के ls -lu
लिए उपयोग कर सकते हैं , हालांकि मैं उपयोग करना पसंद करता हूं ls -l --time=atime
(जिसे लगभग सभी आधुनिक लिनक्स वितरणों में समर्थित होना चाहिए) क्योंकि मैं अक्सर इसका उपयोग नहीं करता हूं, और जब मैं करता हूं तो मैं इसे बेहतर तरीके से याद रख सकता हूं। और समय के अनुसार छाँटने के लिए -t
ध्वज को ls में जोड़ें । तो यह तूम गए वहाँ।
हालांकि एक बड़ा चेतावनी है। हर बार जब फ़ाइल को पढ़ा जाता है, तब अपडेट करना आमतौर पर अनावश्यक-अनावश्यक IO का कारण बनता है, जिससे सब कुछ धीमा हो जाता है। इसलिए, अधिकांश लिनक्स वितरण अब noatime
फाइलसिस्टम माउंट विकल्प के लिए डिफ़ॉल्ट हैं , जो मूल रूप से अपराधों को मारता है, या फिर relatime
, जो केवल एक बार सीमा पार होने पर सामान्य रूप से अपडेट होता है (सामान्य रूप से प्रति दिन एक बार) या यदि फ़ाइल वास्तव में पिछले रीड के बाद संशोधित हुई थी। mount
कमांड चलाकर आप यह पता लगा सकते हैं कि ये विकल्प सक्रिय हैं या नहीं ।
इसके अलावा, ध्यान दें कि एक्सेस का समय इनकोड द्वारा होता है, फ़ाइल नाम से नहीं, इसलिए यदि आपके पास हार्डलिंक है, तो एक से पढ़ना सभी नामों को अपडेट करेगा जो एक ही फ़ाइल को संदर्भित करते हैं।
और, ध्यान रखें कि ग "सृजन" नहीं है; निर्माण यूनिक्स / लिनक्स फाइल सिस्टम द्वारा ट्रैक नहीं किया गया है, जो अजीब लगता है लेकिन वास्तव में समझ में आता है क्योंकि फाइलसिस्टम को यह जानने का कोई तरीका नहीं है कि क्या यह मूल है - शायद फाइल चालीस साल पहले बनाई गई थी और यहां कॉपी की गई थी। और, वास्तव में, कई फ़ाइल संपादक मूल पर प्रतियां बनाकर काम करते हैं। यदि आपको उस जानकारी की आवश्यकता है, तो जैसे संस्करण नियंत्रण प्रणाली का उपयोग करना सबसे अच्छा है git
।
mount
मैनपेज देखें।
ls
डिफ़ॉल्ट रूप से समझदार परिशुद्धता के लिए समय कम कर देता है। पूर्ण परिशुद्धता में समय देखने के लिए कोई भी उपयोग कर सकता है --full-time
।
ls -ltu
सभी फाइलों को सूचीबद्ध करें, पहुंच समय के अनुसार दिखाते और छांटें।
से man ls
:
-u with -lt: sort by, and show, access time with -l: show access
time and sort by name otherwise: sort by access time
यदि आपकी सूची मानव उपभोग के लिए है, तो केवल एक बार (संशोधन के लिए ) पहुँच (पढ़ने के लिए) के लिए ls
छँटाई करने वाली तारीखों में से एक का उपयोग करें । अधिक जानकारी (विशेष रूप से संबंधित चेतावनी और परिभाषा के लिए ) के लिए mattdm का उत्तर देखें ।-tu
-t
-tc
-a
-c
यदि यह प्रोग्राम खपत के लिए है, तो आउटपुट का पार्सिंग ls
समस्याग्रस्त है । यदि आपका शेल zsh है, तो आपको किसी ls
भी तरह की आवश्यकता नहीं है: zsh के पास एक्सेस ( *(Oa)
), इनोड परिवर्तन ( *(Oc)
) या संशोधन ( *(Om)
) समय बढ़ाकर मैच को सॉर्ट करने के लिए ग्लोबिंग क्वालिफायर है । o
बढ़ती उम्र के हिसाब से लोअरकेस सॉर्ट।
act_on_files_by_date *(Om)
अन्यथा, यदि आप जानते हैं कि फ़ाइल नामों में कोई नई रेखा या गैर-मुद्रण योग्य वर्ण (वर्तमान स्थान में) नहीं है, तो आप कुछ ऐसा कर सकते हैं
ls -t | while read -r name; do act_on_one_file "$name"; done
ls -t | xargs -I {} act_on_one_file {}
यदि आप एक साथ कई फाइलों पर कमांड लागू करना चाहते हैं, तो आपको अधिक सेटअप की आवश्यकता है। ध्यान दें कि act_on_files_by_date $(ls -t)
इस तरह से काम नहीं करता है, क्योंकि वाइल्डकार्ड वर्णों या व्हाट्सएप वाले फ़ाइलनामों को कमांड प्रतिस्थापन के परिणाम में विस्तारित किया जाएगा। निम्नलिखित कोड तब तक काम करता है जब तक किसी फ़ाइल नाम में एक नई रेखा या एक गैर-मुद्रण योग्य वर्ण नहीं होता है:
IFS='
'
set -f
act_on_files_by_date $(ls -t)
set +f
unset IFS
यदि आप मनमाने फ़ाइल नामों के साथ सामना करना चाहते हैं, तो आपके पास एक मानक शेल की तुलना में अधिक शक्तिशाली उपकरणों का सहारा लिए बिना बहुत कठिन समय होगा: zsh, perl, python…