उप-निर्देशिकाओं सहित अद्यतन तिथि द्वारा फ़ाइलों को सॉर्ट करना चाहते हैं


17

मैं उप-निर्देशिकाओं सहित अद्यतन तिथियों द्वारा केवल फाइलों को क्रमबद्ध करना चाहता हूं।

मुझे पता चला ls -lrtR | grep ^-। लेकिन यह अद्यतन तिथियों के आधार पर क्रमबद्ध नहीं होता है।

और मुझे इस सूची को एक फ़ाइल में सहेजने की आवश्यकता है। क्या यह संभव है?

Apr 01 2010  InsideDoosanServiceImpl.class  // in A directory
Apr 08 2010  MainController.class  // in B directory
Apr 07 2010  RecommendController.class  // in B directory
Apr 01 2010  MainDao.class  // in B directory

मेरा मतलब है कि पूरी सूची तिथि द्वारा आदेशित नहीं है, लेकिन पहले फ़ोल्डर द्वारा आदेशित की गई है, और तिथि के अनुसार आदेश दिया गया है।

मैं सभी उप-निर्देशिकाओं सहित तिथि के अनुसार पहली सूची का आदेश चाहता हूं।

जवाबों:


12

मुझे यकीन नहीं है कि आप वास्तव में क्या मतलब है update dates, लेकिन आप -rविकल्प का उपयोग कर रहे हैं जो मनुष्य के अनुसार ऐसा करता है -

-आर रिवर्स लेक्सोग्राफिक ऑर्डर प्राप्त करने के लिए क्रम के क्रम को उल्टा करें या सबसे पुरानी प्रविष्टियां पहले (या सबसे बड़ी फाइलें अंतिम, अगर आकार के अनुसार क्रमबद्ध हों

मुझे लगता है कि यह आपके लिए काफी अच्छा होना चाहिए अगर आपको समय के अनुसार फाइलों की आवश्यकता हो।

ls -lRt

यदि आपको lsतब तक सूचीबद्ध सभी अन्य सामानों की आवश्यकता नहीं है, तो आप उपयोग कर सकते हैं -

ls -1Rt

किसी फ़ाइल में परिणाम कैप्चर करने के लिए, आप पुनर्निर्देशन ऑपरेटर का उपयोग कर सकते हैं >और फ़ाइल नाम दे सकते हैं । तो आप ऐसा कुछ कर सकते हैं -

ls -lRt > sortedfile.list

अपडेट करें:

find . -type f -exec ls -lt {} +

मेरा मतलब है कि पिछली बार एक फाइल संशोधित हुई थी :)

सॉर्ट परिणाम फ़ोल्डर और दिनांक द्वारा आदेश दिया गया है। मैं तिथि और फ़ोल्डर के अनुसार क्रमबद्ध करना चाहता हूं .. क्या यह संभव है?

क्षमा करें, क्या आप मुझे कुछ आउटपुट दिखा सकते हैं? यदि आप उपयोग करते हैं तो मैं फ़ोल्डर की छंटाई का काफी अनुसरण नहीं करता था ls -lrt
जयपाल सिंह

// जयपाल सिंह, मैंने अपने आउटपुट को अपने प्रश्न my :) में अपडेट किया। मैं वास्तव में आशा करता हूं कि आप इसे समझेंगे और मेरी खराब अंग्रेजी के लिए क्षमा करेंगे।

1
यह विफल हो जाता है यदि फ़ाइल सूची में xargsकई कॉल करने के लिए मजबूर करने के लिए पर्याप्त रूप से लंबा होता है ls, क्योंकि तब फाइलें केवल प्रत्येक lsआह्वान के भीतर ठीक से सॉर्ट की जाती हैं, लेकिन आउटपुट में सुसंगत वैश्विक क्रम का अभाव होता है।
ब्रैंडन रोड्स

19

Ls के साथ, -R निर्देशिकाओं की पुनरावृत्ति करेगा और यह संशोधन द्वारा क्रमबद्ध हो जाएगा। हालाँकि, यह निर्देशिकाओं को पुनरावर्ती रूप से लागू करता है और प्रत्येक निर्देशिका के लिए लागू होता है। यह सभी निर्देशिकाओं से सभी फ़ाइलों को जमा नहीं करता है और फिर सॉर्ट करता है। (जहाँ तक मैं समझता हूँ, बाद वाला वही है जो आप चाहते हैं)

ग्नू खोज (1) के साथ आप आउटपुट के प्रारूप को निर्दिष्ट कर सकते हैं जिसमें युग और फ़ाइल नाम के बाद से सेकंड की संख्या शामिल है, फिर आप इसे सॉर्ट करने के लिए पाइप कर सकते हैं (1)।

find . -type f -printf "%T@ %f\n" | sort -n > out.txt

हाँ GNU findमदद करता है। लेकिन ओपी AIXमशीनों पर काम करता है इसलिए GNU findउसके पास उपलब्ध नहीं था।
जयपाल सिंह

यह बहुत बुरा है lsछँटाई से पहले फ़ाइलों को जमा करने के लिए नहीं बनाया जा सकता है। lsकी तुलना में बहुत तेज है find
नाथन रींस्टोमेटोनिका आर्थर

lsऔर findएक ही डेटा पढ़ता है, इसलिए मैं किसी भी कारण से कल्पना नहीं कर सकता कि एलएस को खोजने की तुलना में काफी तेज होना चाहिए। मेरे सिस्टम में 5 गुना तेज है (लगभग आधा मिलियन फाइलों के माध्यम से खोज)
रॉल्फ रैंडर

7
आप एक पूर्ण तिथि / समय चाहते हैं और न केवल फ़ाइल नाम, बल्कि आउटपुट में पथ भी बना सकते हैं, उस स्थिति में, स्वरूपण स्ट्रिंग को संशोधित करें: find . -type f -printf "%T@ %Tc %p\n" | sort -n > out.txtजैसे उत्पादन प्रविष्टियाँ 1427913836.2330520210 wed 1 apr 2015 20:43:56 ./subdir/file.txt
कार्ल

महान। इससे मुझे काफी मदद मिली। मैं उम्र के लिए उपनिर्देशिका में सॉर्ट करने के लिए एक रास्ता खोज रहा हूँ!
bhu Boue vidya
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.