आप कहते हैं कि " सिर पर पाई जाने वाली एलएस को पूरा होने में एक भयानक लंबा समय लगता है"।
इसका कारण ls
आपकी निर्देशिका में फ़ाइलों की संख्या नहीं है । यदि आपके पास एकल निर्देशिका में 100,000 फाइलें हैं, तो इस समस्या को हल करने के किसी भी तरीके से सभी 100,000 फाइलों के बारे में जानकारी प्राप्त करनी होगी, इससे पहले कि वे उन्हें छांटने या किसी आउटपुट को प्रिंट करने के बारे में भी सोच सकें।
यदि यह बहुत लंबा हो रहा है, तो असली समाधान फाइलों को कई निर्देशिकाओं में विभाजित करना है।
यदि आप फ़ाइलों को कई निर्देशिकाओं में नहीं फैला सकते हैं, तो क्या कोई तरीका है जिससे आप विचार करने के लिए फ़ाइलों की संख्या को कम कर सकते हैं ? उदाहरण के लिए यदि फ़ाइल नामों में एक तिथि शामिल है, तो शायद आप वाइल्डकार्ड शामिल कर सकते हैं ताकि सिस्टम को 100,000 फ़ाइलों को क्रमबद्ध न करना पड़े। या शायद वे क्रमिक रूप से गिने जा रहे हैं? (यह मदद कर सकता है या नहीं, लेकिन कोशिश करने लायक है।)
ऐसा करने के लिए आप कितनी बार कोशिश कर रहे हैं? शायद यह फिर से उपयोग के लिए आउटपुट को सहेजने / कैशिंग करने लायक है ।
अब, एक सवाल।
क्या आप सुनिश्चित हैं कि आपका मतलब "निर्माण समय" है न कि "परिवर्तन का समय" ? अधिकांश उपकरण केवल "परिवर्तन समय" प्रदर्शित कर सकते हैं, "सृजन समय" नहीं।
"निर्माण का समय" प्राप्त करना एक बहुत ही नई बात है, जिसके लिए एक ext4 फाइल सिस्टम की आवश्यकता होती है, और कुछ उपकरण जिन्हें स्थापित करना आसान नहीं है।
अगर आप बदलाव का समय चाहते हैं
चेंज टाइम (शॉर्ट के लिए समय) का मतलब है कि फ़ाइल की विशेषताओं को अंतिम बार बदल दिया गया है।
ls -c
समय के अनुसार।
आप आउटपुट को आरोही क्रम में चाहते हैं, अवरोही में नहीं, इसलिए आपको आउटपुट को -r
विकल्प के साथ उल्टा करने की आवश्यकता है।
तो आप इसे इस तरह से कर सकते हैं:
ls -cr | head -n 100
एक ही समस्या का एक लंबा समाधान का उपयोग कर stat
:
find . -mindepth 1 -maxdepth 1 -exec stat -c $'%Z\t%n' '{}' \; |
sort -k 1n |
cut -f 2 -d $'\t' |
head -n 10 |
sed -e 's/^\.\///'
लेकिन यह ls -cr
मेरे सिस्टम की तुलना में धीमी गति से चलता है।
यदि आप संशोधन समय चाहते हैं
संशोधन समय (शॉर्ट के लिए माइम) का मतलब है कि फ़ाइल की सामग्री अंतिम बार बदल गई है।
ls -t
माइम द्वारा सॉर्ट करें।
बदलें ls -cr
करने के लिए ls -tr
(सबसे अच्छा विकल्प) या परिवर्तन stat -c $'%Z\t%n'
करने के लिए stat -c $'%Y\t%n'
।
यदि आपको सृजन के समय की आवश्यकता है
(कम समय के लिए)
यह कठिन है।
सबसे पहले, यह सुनिश्चित करें कि निर्देशिका एक फाइलसिस्टम पर है जिसका उपयोग करके स्वरूपित किया गया है ext4
। आप इसे tune2fs -l <device name>
जांचने के लिए उपयोग कर सकते हैं ।
फिर, एक नया stat
प्रारूप कहा जाता है %W
, जो यहां आपकी मदद कर सकता है। इसे प्राप्त करने के लिए, आपको अक्टूबर 2010 में या उसके बाद रिलीज़ किए गए GNU Coreutils का एक संस्करण डाउनलोड करना होगा, इसे निकालना होगा, इसे संकलित करना होगा और इसे इंस्टॉल करना होगा।
फिर, आपके कर्नेल के आधार पर, यह काम कर सकता है (इसे आज़माया नहीं गया है)।
find . -mindepth 1 -maxdepth 1 -exec stat -c $'%W\t%n' '{}' \; |
sort -k 1n |
cut -f 2 -d $'\t' |
head -n 10 |
sed -e 's/^\.\///'
यह सभी देखें:
यदि आप के बारे में त्रुटियाँ मिलती हैं "'$\t'
'$\t'
अंकन की आवश्यकता है bash
या zsh
: उस में काम नहीं करेगा dash
या sh
Ubuntu पर। क्या तुम सच में उन के गोले का उपयोग करने की जरूरत है, आप किसी भी बदलना होगा \t
करने के लिए Ctrl+ V, Tabऔर प्रमुख को हटाने $
सिर्फ उद्घाटन बोली से पहले से।
find -mtime +<number of days> -delete
निश्चित उम्र से अधिक पुरानी सभी फाइलों को साफ करना है । इसका मतलब है कि कोई भी प्रकार आवश्यक नहीं है।