2012-12-03 4 views
26

मान लीजिए मैं कुछ फाइलों के साथ एक निर्देशिका है:एलएस का उपयोग, एक्सटेंशन को मुद्रित किए बिना फ़ाइलों को कैसे सूचीबद्ध करें (डॉट के बाद भाग)?

$ ls 
a.c b.c e.c k.cpp s.java 

मैं फाइल एक्सटेंशन (कि डॉट सहित डॉट निम्नलिखित हिस्सा है,) के बिना परिणाम कैसे प्रदर्शित कर सकते हैं? इस तरह:

$ <some command> 
a 
b 
e 
k 
s 

उत्तर

42

sed का उपयोग कर?

ls -1 | sed -e 's/\..*$//' 
+7

एफडब्ल्यूआईडब्ल्यू, मैं 'एलएस | का उपयोग करता हूं sed/s (\ *। \) \ .. */\ 1/''केवल * अंतिम * डॉट से शुरू होने वाले भाग को बंद करने के लिए। (साथ ही, निर्देशिका नाम में '.' के लिए देखें, उदाहरण के लिए ls ../src – rici

+2

ls -1 और ls समान रूप से व्यवहार करते हैं जब ls के लिए stdout एक पाइप है। वास्तव में कोई फर्क नहीं पड़ता ... –

+4

@rici:' sed -e's /\.[^.]*$// '' – anishsane

12
ls | while read fname 
do 
    echo ${fname%%.*} 
done 

कि कोशिश करो।

+8

[ls पार्स नहीं है] - 'के लिए * में fname; करो ... ' –

+0

@Glenn - यह एक सही दृष्टिकोण है, हां। यूयूओसी अवधारणा। मैंने सोचा कि ओपी एलएस का उपयोग करके निहित है। तो जाहिर है Dyno Hungjun फू किया था। –

4
ls -a | cut -d "." -f 1 

आदमी (1) में कटौती

बहुत आसान, -d स्विच सीमांकक और -f जो क्षेत्र आप चाहते हैं परिभाषित करता है।

संपादित करें: riverfall's परिदृश्य भी केक का टुकड़ा है क्योंकि कट अंत से भी शुरू हो सकता है, हालांकि तर्क कुछ अलग है। यहाँ यादृच्छिक नाम के साथ फ़ाइलों का एक समूह के साथ एक उदाहरण, दो डॉट्स, एक एकल बिंदु के साथ कुछ और कुछ विस्तार के बिना के साथ कुछ:

[email protected]:~/test$ ls 
test.001.rpx test.003.rpx test.005.rpx test.007.rpx test.009.rpx testxxx 
test.002.rpx test.004.rpx test.006.rpx test.008.rpx test_nonum test_xxx.rtv 


[email protected]:~/test$ ls | cut -d "." -f -2 
test.001 
test.002 
test.003 
test.004 
test.005 
test.006 
test.007 
test.008 
test.009 
test_nonum 
testxxx 
test_xxx.rtv 

शून्य से से पहले क्षेत्र नंबर का उपयोग करता है यह सब खत्म करने, लेकिन संकेत दिया खेतों (इस मामले में 1,2) और इसे पीछे रखकर यह अंत से गिनती शुरू कर देता है। (Http://mywiki.wooledge.org/ParsingLs) के लिए ऑफसेट और क्षेत्रों के अलावा पात्रों

यह वही अंकन किया जा सकता है (आदमी पृष्ठ देखें)

+1

फ़ाइल नाम 1 से अधिक डॉट, विशेष रूप से आरपीएम पैकेज – riverfall

+0

क्या कोई मुझे बता सकता है कि ls | cut -d "। -f -2> test.txt काम नहीं करता है? – holistic

+0

कोई विचार नहीं है। मुझे नहीं पता कि आप क्या देखना चाहते हैं। मुझे लगता है कि आप जानते हैं कि आपको फ़ाइल को 'बिल्ली' के साथ पढ़ना है, है ना? – runlevel0

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

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