2012-11-13 13 views
5

में मैं संख्यानुसार फ़ाइलों .flv सॉर्ट करने के लिए की जरूरत है और मैं निम्न आदेश के साथ ऐसा करने में सक्षम था:क्रमबद्ध फ़ाइलों संख्यानुसार बैश

ls *\.flv | sort --version-sort -f 

लेकिन कई फ़ाइलें (सैकड़ों) के साथ इसे सही ढंग से छँटाई नहीं है।

ls *\.flv | sort --version-sort -f | tail -n 20 
e680.flv 
e681.flv 
e682.flv 
e683.flv 
e684.flv 
e685.flv 
e686.flv 
e687.flv 
e688.flv 
e689.flv 
e690.flv 
e691.flv 
e692.flv 
e693.flv 
e694.flv 
e695.flv 
**e696.flv** 
s572.flv 
s602.flv 
s654.flv 

लेकिन अजीब यह, अगर मैं "*.flv" यह काम कर रहा बिना आदेश को बर्बाद कर रहा हूँ है। मैं केवल ls का उपयोग कर सकता हूं लेकिन मेरे पास फ़ोल्डर में अन्य फ़ाइल प्रकार हैं।

ls | sort --version-sort -f | tail -n 20 
e680.flv 
e681.flv 
e682.flv 
e683.flv 
e684.flv 
e685.flv 
e686.flv 
e687.flv 
e688.flv 
e689.flv 
e690.flv 
e691.flv 
e692.flv 
e693.flv 
e694.flv 
e695.flv 
e696.flv 

मैं अब तक की कोशिश की है:

ls | sort --version-sort -f | grep "flv" 
    ls *.flv | sort --version-sort -f 
    ls *\.flv | sort --version-sort -f 
    ls *.flv | sort -f 
+2

समस्या क्या है? 'e696.flv' सही जगह पर है, है ना? – dogbane

+0

क्या आपने बस "ls * .flv | sort -f | tail -n 20 " – m1k3y3

+0

@ m1k3y3 निष्पादित करने का प्रयास किया था, यह फ़ाइल नाम –

उत्तर

11

मैं कोड निम्नलिखित की कोशिश करेंगे। मेरी परीक्षण परिदृश्य पर काम करता है: प्रत्येक पंक्ति पर

ls -1 *\.flv | sort -n -k1.2 

ls सूचियों FLV फ़ाइलों को 1, sort दूसरा चरित्र (संख्या की शुरुआत) से शुरू होने वाले प्रत्येक पंक्ति पर पहली (और केवल एक) शब्द लेता है। प्रकार संख्यानुसार

5

पहले वर्ण के बाद संख्यानुसार सॉर्ट करने के लिए, इस प्रयास करें:

sort -k1.2n 
2

1.flv से 9999.flv

ls -v1 *.flv 

इच्छा उत्पादन के लिए क्रमिक रूप से नामित फाइलों के साथ एक फ़ोल्डर को देखते हुए:

1.flv 
2.flv 
... 
10.flv 
... 
90.flv 
... 
100.flv 
101.flv 
... 
9999.flv 
संबंधित मुद्दे