중복 가능성:
숫자순으로 정렬된 파일 나열
마지막 필드의 번호를 기준으로 정렬하려면 어떻게 해야 합니까? 나는 전에 시도했습니다 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" 매개변수를 사용하지 않는 것입니다.