13

.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
4

3 に答える 3

22

次のコードを試してみます。私のテストシナリオで動作します:

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

lsリストのflv ファイルは各行にsort1 つずつあり、2 文字目 (数字の先頭) から始まる各行の最初の (そして 1 つだけの) 単語を取ります。数値でソートします

于 2012-11-13T12:58:23.563 に答える
5

最初の文字の後に数値で並べ替えるには、これを試してください:

sort -k1.2n
于 2012-11-13T12:59:53.990 に答える