2012-03-08 11 views
21

द्वारा ऑर्डर करें, मैं एक विशिष्ट निर्देशिका (और उपनिर्देशिका) के भीतर सभी फ़ाइलों (उनके पूर्ण पथों के साथ) सूचीबद्ध करने के लिए एक लिनक्स कमांड बनाना चाहता हूं। एक्सेस समय द्वारा आदेश दिया गया।किसी निर्देशिका (और उपनिर्देशिका) में सभी फ़ाइलों (पूर्ण पथों के साथ) की सूची, एक्सेस समय

एलएस एक्सेस समय से ऑर्डर कर सकता है, लेकिन पूरा पथ नहीं देता है। ढूंढें पूर्ण पथ देता है, लेकिन एक्सेस समय पर आपके पास एकमात्र नियंत्रण है -टाइम एन (कम से कम 24 * एन घंटे पहले तक पहुंचा) के साथ एक सीमा निर्दिष्ट करना है, जो मैं नहीं चाहता हूं।

क्या एक्सेस समय के द्वारा आदेश देने का एक तरीका है और एक बार में पूरा पथ प्राप्त करना है? मैं सिर्फ एक स्क्रिप्ट लिख सकता था, लेकिन ऐसा लगता है कि मानक लिनक्स प्रोग्राम के साथ ऐसा करने का एक तरीका होना चाहिए।

उत्तर

20
find . -type f -exec ls -l {} \; 2> /dev/null | sort -t' ' -k +6,6 -k +7,7 

यह find करने के लिए अपने खोज मानदंड जोड़ने के सभी फाइलों को मिलेगा, और तारीख और फिर समय से उन्हें सॉर्ट कर सकते हैं। इसके बाद आप का उपयोग awk या cutls -l उत्पादन

+0

काफी अच्छी तरह से काम करता है। मुझे लगता है कि यह getconf ARG_MAX द्वारा सीमित नहीं है? – Andrew

+0

ठीक है, यह ARG_MAX द्वारा सीमित नहीं है क्योंकि यह इसे तर्क के रूप में पास नहीं करता है, बल्कि इसके बजाय आउटपुट पाइप करता है। कार्यक्रमों के बीच कितना डेटा पाइप किया जा सकता है इस पर कोई सीमा नहीं है। – Alex

+0

ग्रेट! धन्यवाद दोस्त! उस सीमा के बारे में जानना बहुत अच्छा है क्योंकि मेरी निर्देशिका में कई फाइलें हैं। – Andrew

11

आप की कोशिश कर सकते:

ls -l $(find /foo/bar -type f) 
  • आप अन्य विकल्पों में जोड़ सकते हैं (उदाहरण के लिए आयकर छँटाई के लिए) ls आदेश करने के लिए अपने लक्ष्य को प्राप्त करने।
  • भी आप cmd
+1

मैं थोड़ा इस संशोधित और मिल गया वास्तव में क्या मैं के साथ चाहते हैं ls -ult $ (लगता है DIRECTORY प्रकार च) | grep -o "[^] \ + $" धन्यवाद! – Andrew

+2

ध्यान रखें कि '$ (आउटपुट डायरेक्ट्री-टाइप एफ) के आउटपुट को' ls -ult' के लिए कमांड लाइन तर्क के रूप में उपयोग किया जाता है, तो आप 'getconf ARG_MAX' फ़ाइलों तक सीमित होंगे – Alex

+0

सिर के लिए धन्यवाद ऊपर, एलेक्स! – Andrew

3

find . -type f | xargs ls -ldt से दिनांक और फ़ाइलों का नाम निकालने के लिए वहां नहीं है के रूप में इतने सारे फ़ाइलों को तर्क की सीमा की तरह आदेश मारा और ls के 2 उदाहरणों अंडे जब तक चाल करना चाहिए कर सकते हैं।

1
find . -type f -exec ls -l --full-time {} \; 2> /dev/null | sort -t' ' -k +6,6 -k +7,7 

एलेक्स का जवाब मेरे लिए काम नहीं करता क्योंकि मेरे पास एक वर्ष से अधिक पुरानी फाइलें थीं और सॉर्टिंग गड़बड़ हो गई थी। उपरोक्त --full-time पैरामीटर जोड़ता है जो दिनांक/समय मानों को nuetralizes और उन्हें कितना पुराना है इस पर ध्यान दिए बिना उन्हें क्रमबद्ध बनाता है।

+0

'--full-time' पैरामीटर मैक ओएस एक्स पर मौजूद नहीं है @ केंट के समाधान बहुत अच्छी तरह से काम करता है। –

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

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