फ़ाइलों को सूचीबद्ध करते समय मैं निर्देशिकाओं को बाहर कैसे करूं?


21

वर्तमान निर्देशिका में फ़ाइलें सूचीबद्ध करते समय मैं निर्देशिकाओं को कैसे छोड़ूं?

ls .

^ लिस्टिंग में निर्देशिकाओं को शामिल करेगा।

जवाबों:


23

इसको आजमाओ:

find . -maxdepth 1 -not -type d

3
इसे सरल रखें: $ खोजें।
-टाइप

9
नहीं (1) यह पुनरावर्ती होगा, (2) यह सहानुभूति को सूचीबद्ध नहीं करेगा। @Steve ने ls .बिना डाइरेक्टरी के बराबर के लिए पूछा - और यहाँ यह है।
अलेक्जेंडर ग्लैडिश

2
जोड़ना -lsया निर्देशिकाओं के बिना -exec ls -l {} \;इसे बनाना होगा ls -l
लदाददाद

15

इसे अपने बराबर पाने के लिए ls .आपको छिपे हुए डायर को नहीं दिखाना होगा।

find . -maxdepth 1 -not -type d -and -not -name '.*'

और जो अभी भी आपको प्रत्येक फ़ाइल नाम के साथ './' के साथ छोड़ता है। यह वास्तव में एक मुद्दा नहीं है, लेकिन मुझे लगता है कि यह थोड़े बदसूरत है। मैं के साथ गया:

ls -p | grep -v '/$'

और इससे आपको एक लिस्टिंग मिलेगी जो समान दिखती है, और आप अतिरिक्त lsतर्क भी जोड़ सकते हैं । एक जोड़ें --color=alwaysऔर आप अपने dircolors वापस मिल जाएगा, या -aछिपी हुई फ़ाइलों को देखने के लिए।

मुझे अलेक्जेंडर का जवाब पसंद है क्योंकि वह वास्तव में विचाराधीन फाइल की एक फाइल सिस्टम विशेषता पर निर्भर करता है इसलिए यह कभी भी मूर्ख नहीं होगा। मेरा जवाब उस फ़ाइल से मूर्ख हो जाएगा, जिसमें '/' है, जिसमें अंतिम नाम है। लेकिन ऐसा लगता है कि यह परेशानी पूछ रहा है।


1
'-नोट' GNU से संबंधित है, क्योंकि यह POSIX अनुरूप नहीं है, इन विकल्पों को न सिखाना बेहतर है क्योंकि एक उपयोगकर्ता के पास "खराब" आवास हो सकते हैं और अन्य UNIXes पर खो सकते हैं :)
jirib

2
@JiriXichtkniha पोसिट विकल्प -नोट क्या है?
लुकास गैलिंडो

5

इसे इस्तेमाल करे:

$ मिल गया। -प्रकार f -maxdepth १

या यह:

$ ls -p | egrep -v / $

$ ls -la | egrep -v ^ d


3

हालाँकि यह एक पुरानी पोस्ट है, लेकिन मुझे लगा कि इससे मदद मिल सकती है।

$ ls -l | grep -v ^ d

यह सभी फ़ाइलों को सूचीबद्ध करेगा, जिसमें सिम्लिंक, वर्ण और ब्लॉक फाइलें शामिल हैं।


यह उत्तर जाम करने से पहले एक साल पहले ही प्रदान किया गया था, (यह दृश्य शोर बना रहा है।)
एलेक्स रॉश

2

उपरोक्त "समाधान" एलएस की क्षमताओं में से कुछ को खो देते हैं - उदाहरण के लिए: केवल फाइलों की सूची, अवरोही संशोधन समय में छांटे गए।

"Ls -p | grep" उत्तर lsantly अन्य तत्वों के साथ सौदा नहीं करते हैं जैसे कि -R उन्हें वांछित होना चाहिए

निम्नलिखित उत्तर, जबकि अधिक वर्बोज़, मेरी राय में ट्रूस्ट एलएस व्यवहार और "फ़ाइलों को केवल" चुनने के लिए सबसे अधिक लचीलापन दर्शाता है

ls -t . | while read line; do
  if [ -f $line ]; then
    echo $line
  fi 
done

बस वांछित के रूप में एलएस स्विच को बदलें और परिणाम केवल फाइलों के साथ वापस आ जाएगा। यदि लिंक और अन्य मदों की भी आवश्यकता होती है, तो समावेश के लिए परीक्षण के लिए मामूली पुनरावृत्ति की आवश्यकता होगी।


0
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 तेज है
एलेक्सा रोश

0

मैं एक ऐसी प्रणाली पर था जहां findबाइनरी ने समर्थन नहीं किया था -notऔर मैंने उपयोग करना समाप्त कर दिया था:

ls|while read f;do [ -f "$f" ]&& echo $f;done

लाभ: sh ls echo
बैश और डैश के साथ संगत के अलावा किसी और चीज पर भरोसा नहीं करता है
, अन्य चीजों से मेल खाने के लिए बदला जा सकता है, (जैसे निर्देशिका) -f
कुछ उत्तरों की तुलना में सबसे तेज है और कम रैम और सीपीयू का उपयोग करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.