2013-02-23 22 views
17

मुझे nlb से शुरू होने वाले फ़ोल्डर में नवीनतम निर्देशिका नाम प्राप्त करने की आवश्यकता है।निर्देशिका में नवीनतम फ़ाइल प्राप्त करें

#!/bin/sh 

cd /home/ashot/checkout 
dirname=`ls -t nlb* | head -1` 
echo $dirname 

जब फ़ोल्डर नाम से शुरू होने nlb के साथ कई फ़ोल्डर हैं, इस स्क्रिप्ट ठीक काम करता है, लेकिन जब वहाँ नाम nlb शुरू करने के साथ केवल एक फ़ोल्डर है, इस स्क्रिप्ट है कि फ़ोल्डर के अंदर नवीनतम फ़ाइल नाम प्रिंट करता है। नवीनतम निर्देशिका नाम प्राप्त करने के लिए इसे कैसे बदलें?

उत्तर

11

-d एलएस के लिए तर्क जोड़ें। इस तरह यह हमेशा जो भी बताया गया है उसे प्रिंट करेगा, निर्देशिकाओं के अंदर न देखें।

6
#!/bin/sh 

cd /home/ashot/checkout 
dirname=$(ls -dt nlb*/ | head -1) 
echo $dirname 

के रूप में अन्य जवाब में यह बताते हैं, आप -d जरूरत के अंदर निर्देशिका नहीं देखने के लिए।

यहां एक अतिरिक्त युक्ति पैटर्न में / जोड़ रही है। इस प्रश्न में आपने नवीनतम निर्देशिका प्राप्त करने के लिए निर्दिष्ट किया है। इस पिछली / के साथ केवल निर्देशिकाओं का मिलान किया जाएगा, अन्यथा यदि कोई फ़ाइल मौजूद है जो नवीनतम है और पैटर्न nlb* से मेल खाता है जो आपकी स्क्रिप्ट को तोड़ देगा।

मैंने `...` को $(...) में भी बदल दिया जो आधुनिक अनुशंसित लेखन शैली है।

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