में किसी विशिष्ट सेट के लिए फ़ाइलों को खोजने के लिए ls का उपयोग कैसे करें मेरे पास निर्देशिका में फ़ाइलों का एक सेट है। मुझे विशिष्ट तिथियों के सेट के लिए फाइलें ढूंढनी होंगी (उदाहरण के लिए यदि मुझे 16 जनवरी से 20 जनवरी तक फाइलों की आवश्यकता है)। मैंने ls -ltr | grep <date>
का उपयोग करने की कोशिश की लेकिन फाइलों को चुनने के लिए यह बहुत से कदम उठा रहा है। क्या ऐसा करने का कोई आसान तरीका है। धन्यवाद!यूनिक्स
यूनिक्स
उत्तर
मुझे यकीन है कि कितने फ़ाइलें आप में है नहीं कर रहा हूँ अपने निर्देशिका लेकिन कुछ इस तरह blindingly उपवास किया जाना चाहिए:
ls -al | awk '$6 == "Jan" && $7 >= 16 && $7 <= 20 {print $9}'
अपने सिस्टम पर, मैं दिनांक थोड़ा संशोधित साथ निम्न देखें :
pax> ls -al | awk '$6 == "Jan" && $7 >= 16 && $7 <= 29 {print $9}'
kids_shares.ods
our_savings.gnumeric
photos
pax> ls -ald kids_shares.ods our_savings.gnumeric photos
-rw-r--r-- 1 pax pax 51005 Jan 29 19:39 kids_shares.ods
-rw-r--r-- 1 pax pax 2275 Jan 28 14:48 our_savings.gnumeric
drwxrwxrwx 130 pax pax 4096 Jan 29 21:47 photos
आप देख सकते हैं कि तिथियां दी गई फ़ाइलों के लिए मेल खाते हैं।
यह देखने के लिए एक बात यह है कि: यदि फ़ाइल हाल ही में है, तो इसमें कॉलम 8 में समय होगा। कुछ उम्र से परे, ls
वर्ष को वहां डालना शुरू कर देता है। मेरे पास अस्पष्ट याद है कि यह छह महीने की सीमा के आसपास कहीं है लेकिन मैं बिल्कुल निश्चित नहीं हूं। आपको इसके लिए भी पूरा करने की आवश्यकता होगी।
बहुत अच्छा काम किया ... – Shash
इसके बजाय find(1)
का उपयोग करें, यह बहुत आसान होगा।
find . -mtime -$start -mtime +$end
'ढूंढ' में 'नया' ध्वज है (यह देखने के लिए कि यह किसी अन्य फ़ाइल से नया है या नहीं) लेकिन दुर्भाग्य से'ल्डर 'नहीं है। मुझे यकीन नहीं है कि यह इन विशिष्ट तारीख सीमाओं के लिए उपयुक्त है। – paxdiablo
@paxdiablo यह उपयुक्त है, मैंने अभी एक उदाहरण जोड़ा है (भी, ढूंढें '!' (नहीं) ऑपरेटर है) – wich
ओह, मैंने इसके बारे में नहीं सोचा था। अच्छा निर्णय। – paxdiablo
आप find
का उपयोग कर बेहतर हैं। विशिष्ट समय के साथ खोजने के लिए विशिष्ट समय के साथ दो temp फ़ाइलों को बनाकर शुरू करें। touch
ऐसा कर सकते हैं:
touch -t "201301160001" ./start
touch -t "201301202359" ./finish
फिर find
चलाएँ:
find /path/to/files -type f -newer ./start ! -newer ./finish
असल में, इन दोनों खोज-आधारित समाधान शायद मेरे से बेहतर हैं - अगर आप उपनिर्देशिका में नहीं जाना चाहते हैं तो अधिकतम अधिकतम उपयोग करने की आवश्यकता हो सकती है। दोनों के लिए +1। – paxdiablo
@paxdiablo: धन्यवाद दोस्त। मैंने पारस्परिक रूप से पारित किया क्योंकि (हालांकि मैं 'ls' आउटपुट को पार्स नहीं करना पसंद करता हूं) OP _did_ ऐसा करना चाहता था, और 'awk' एक अच्छा विकल्प था। – Steve
यह मेरे लिए इंटरैक्टिव रूप से बहुत अच्छा काम करता है लेकिन स्क्रिप्ट में उपयोग किए जाने पर कोई परिणाम नहीं देता है (या तो '।/Script.sh',' bash script.sh' या 'source script.sh' के साथ)। मुझे लगता है कि यह बैंग के साथ करना है; जब मैं डीबग करने के लिए 'bash -x' का उपयोग करता हूं, तो यह सिंगल कोट्स से घिरा हुआ है; कमांड चलाने से इस तरह कुछ भी नहीं आता है। – rensa
- 1. यूनिक्स
- 2. यूनिक्स
- 3. यूनिक्स
- 4. यूनिक्स
- 5. यूनिक्स
- 6. यूनिक्स
- 7. यूनिक्स
- 8. यूनिक्स
- 9. यूनिक्स
- 10. यूनिक्स
- 11. यूनिक्स
- 12. यूनिक्स
- 13. यूनिक्स
- 14. यूनिक्स
- 15. यूनिक्स
- 16. यूनिक्स
- 17. यूनिक्स
- 18. यूनिक्स
- 19. यूनिक्स
- 20. यूनिक्स
- 21. यूनिक्स
- 22. यूनिक्स
- 23. यूनिक्स
- 24. यूनिक्स
- 25. यूनिक्स
- 26. यूनिक्स
- 27. यूनिक्स
- 28. यूनिक्स के साथ यूनिक्स खोजें
- 29. यूनिक्स सॉर्ट
- 30. यूनिक्स मशीन
Shash, स्वीकार किए जाते हैं जवाब के बारे में एक थिंक है, मुझे लगता है कि खोजने के काम के लिए एक बेहतर उपकरण हो सकता है। – paxdiablo
@paxdiablo ठीक है, यह भी कोशिश करेगा कि – Shash