重複の可能性:
数値順に並べられたファイルのリスト
最後のフィールドの番号で並べ替えるにはどうすればよいですか?私は前に試しましたsort -t ' ' -k9,10n
:
-rw-r--r-- 1 root root 440 May 14 08:52 test.txt.6
-rw-r--r-- 1 root root 470 May 14 08:52 test.txt.8
-rw-r--r-- 1 root root 2.6K May 14 08:52 test.txt.14
-rw-r--r-- 1 root root 449 May 14 08:52 test.txt.7
-rw-r--r-- 1 root root 434 May 14 08:52 test.txt.13
-rw-r--r-- 1 root root 554 May 14 08:52 test.txt.4
-rw-r--r-- 1 root root 426 May 14 08:52 test.txt.12
-rw-r--r-- 1 root root 1.6K May 14 08:52 test.txt.5
-rw-r--r-- 1 root root 7.2K May 14 08:52 test.txt.11
-rw-r--r-- 1 root root 444 May 14 08:52 test.txt.3
-rw-r--r-- 1 root root 927 May 14 08:52 test.txt.9
-rw-r--r-- 1 root root 681 May 14 08:52 test.txt.15
-rw-r--r-- 1 root root 427 May 14 08:52 test.txt.2
-rw-r--r-- 1 root root 458 May 14 08:52 test.txt.16
-rw-r--r-- 1 root root 2.4K May 14 08:52 test.txt.10
-rw-r--r-- 1 root root 423 May 14 08:52 test.txt.17
-rw-r--r-- 1 root root 424 May 14 08:52 test.txt.1
答え1
さて、問題のいくつかは、-t ' '
区切り文字が折り畳まれていないため、9番目の列のサイズが4文字で3文字が空であることです。それを削除すると、希望の折りたたみスペースが作成されます。他の人が言ったように、問題の別の部分は、フィールドが数字ではないということです。幸いなことに、バージョン番号とよく似ており、-V
バージョンsort()を使用してソートできます。また、連続した場合(例:1-17、欠落なし)、他のスレッドで述べたように中括弧を使用できます(test.txt.{1..17}
)。
ls -l | sort -Vk9
echo test.text.{1..17}
答え2
次のコマンドを使用すると、任意の方法でソートできます。 ls-lv
答え3
ソートを使用するときによく犯される間違いは、数値でソートするときに「-n」パラメーターを使用しないことです。