2012-11-13 22 views
5

I sayısal dosyalar .flv sıralamak gerekiyor ve ben şu komutla bunu başardı: Doğru sıralama değil Dosyaları sıralama sayısal bash

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

ancak birçok dosya (yüz) ile

. i işe yarıyor "*.flv" olmadan komutu mahvediyorum eğer

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 

ama garip bu vardır. Sadece ls kullanabilirdim ama klasörde başka dosya türleri var. Ben şimdiye kadar ne denedim

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

sorun ne? e696.flv doğru yerde mi? – dogbane

+0

basitçe "ls * .flv | sort -f | tail -n 20 " – m1k3y3

+0

@ m1k3y3'ü çalıştırmayı denediniz, dosya adında –

cevap

11

kod aşağıdaki çalışacaktı. Benim test senaryo çalışır:

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

ls listeleri flv dosyaları 1, her satırda, sort ikinci karakteri (numarasının başlangıcı) gününden itibaren her satırda ilk (ve tek) sözcüğü alır. Sıralar sayısal

5

ilk karakterden sonra sayısal olarak sıralamak, şunu deneyin:

sort -k1.2n 
2

1.flv den 9999.flv

ls -v1 *.flv 

irade çıkışına sıralı olarak adlandırılır dosyaları ile bir klasör Verilen:

1.flv 
2.flv 
... 
10.flv 
... 
90.flv 
... 
100.flv 
101.flv 
... 
9999.flv