वर्तमान निर्देशिका में फ़ाइलें सूचीबद्ध करते समय मैं निर्देशिकाओं को कैसे छोड़ूं?
ls .
^ लिस्टिंग में निर्देशिकाओं को शामिल करेगा।
वर्तमान निर्देशिका में फ़ाइलें सूचीबद्ध करते समय मैं निर्देशिकाओं को कैसे छोड़ूं?
ls .
^ लिस्टिंग में निर्देशिकाओं को शामिल करेगा।
जवाबों:
इसको आजमाओ:
find . -maxdepth 1 -not -type d
ls .बिना डाइरेक्टरी के बराबर के लिए पूछा - और यहाँ यह है।
-lsया निर्देशिकाओं के बिना -exec ls -l {} \;इसे बनाना होगा ls -l।
इसे अपने बराबर पाने के लिए ls .आपको छिपे हुए डायर को नहीं दिखाना होगा।
find . -maxdepth 1 -not -type d -and -not -name '.*'
और जो अभी भी आपको प्रत्येक फ़ाइल नाम के साथ './' के साथ छोड़ता है। यह वास्तव में एक मुद्दा नहीं है, लेकिन मुझे लगता है कि यह थोड़े बदसूरत है। मैं के साथ गया:
ls -p | grep -v '/$'
और इससे आपको एक लिस्टिंग मिलेगी जो समान दिखती है, और आप अतिरिक्त lsतर्क भी जोड़ सकते हैं । एक जोड़ें --color=alwaysऔर आप अपने dircolors वापस मिल जाएगा, या -aछिपी हुई फ़ाइलों को देखने के लिए।
मुझे अलेक्जेंडर का जवाब पसंद है क्योंकि वह वास्तव में विचाराधीन फाइल की एक फाइल सिस्टम विशेषता पर निर्भर करता है इसलिए यह कभी भी मूर्ख नहीं होगा। मेरा जवाब उस फ़ाइल से मूर्ख हो जाएगा, जिसमें '/' है, जिसमें अंतिम नाम है। लेकिन ऐसा लगता है कि यह परेशानी पूछ रहा है।
हालाँकि यह एक पुरानी पोस्ट है, लेकिन मुझे लगा कि इससे मदद मिल सकती है।
$ ls -l | grep -v ^ d
यह सभी फ़ाइलों को सूचीबद्ध करेगा, जिसमें सिम्लिंक, वर्ण और ब्लॉक फाइलें शामिल हैं।
उपरोक्त "समाधान" एलएस की क्षमताओं में से कुछ को खो देते हैं - उदाहरण के लिए: केवल फाइलों की सूची, अवरोही संशोधन समय में छांटे गए।
"Ls -p | grep" उत्तर lsantly अन्य तत्वों के साथ सौदा नहीं करते हैं जैसे कि -R उन्हें वांछित होना चाहिए
निम्नलिखित उत्तर, जबकि अधिक वर्बोज़, मेरी राय में ट्रूस्ट एलएस व्यवहार और "फ़ाइलों को केवल" चुनने के लिए सबसे अधिक लचीलापन दर्शाता है
ls -t . | while read line; do
if [ -f $line ]; then
echo $line
fi
done
बस वांछित के रूप में एलएस स्विच को बदलें और परिणाम केवल फाइलों के साथ वापस आ जाएगा। यदि लिंक और अन्य मदों की भी आवश्यकता होती है, तो समावेश के लिए परीक्षण के लिए मामूली पुनरावृत्ति की आवश्यकता होगी।
ls $(file --no-pad -F' ' * | grep -v directory | cut -d' ' -f1)
इसके साथ आप अभी भी lsआमतौर पर ले जाने वाले किसी अन्य विकल्प का उपयोग कर सकते हैं । या ... -vकेवल निर्देशिका को हटाने के लिए। या ... fileएएससीआईआई, खाली, ईएलएफ, और इसी तरह से समझने वाले किसी भी अन्य विवरण के साथ निर्देशिका को बदलें ।
ls -t .|while read f;do [ -f "$f" ]&& echo $f;doneमेरे परीक्षणों में लगभग 3x तेज है
मैं एक ऐसी प्रणाली पर था जहां findबाइनरी ने समर्थन नहीं किया था -notऔर मैंने उपयोग करना समाप्त कर दिया था:
ls|while read f;do [ -f "$f" ]&& echo $f;done
लाभ: sh ls echo
बैश और डैश के साथ संगत के अलावा किसी और चीज पर भरोसा नहीं करता है
, अन्य चीजों से मेल खाने के लिए बदला जा सकता है, (जैसे निर्देशिका) -f
कुछ उत्तरों की तुलना में सबसे तेज है और कम रैम और सीपीयू का उपयोग करता है।