Natural order numerical sorting
Computing 2009. 7. 27. 19:19가끔 이런 필요가 생긴다 :
아래와 같은 입력이 있을 때 이것을 순서대로 정리하고 싶은 경우.
File.1.txt
File.10.txt
File.11.txt
File.12.txt
File.13.txt
File.14.txt
File.15.txt
File.16.txt
File.17.txt
File.18.txt
File.19.txt
File.2.txt
File.20.txt
File.3.txt
File.4.txt
File.5.txt
File.6.txt
File.7.txt
File.8.txt
File.9.txt
sort 를 사용하면....
$ ls -1 | sort
File.1.txt
File.10.txt
File.11.txt
File.12.txt
File.13.txt
File.14.txt
File.15.txt
File.16.txt
File.17.txt
File.18.txt
File.19.txt
File.2.txt
File.20.txt
File.3.txt
File.4.txt
File.5.txt
File.6.txt
File.7.txt
File.8.txt
File.9.txt
우웩...;;; 원하는 결과가 안나온다. 그래서 sort 에 numerical order 를 따르라고 -n 옵션을 줘 봐도 잘 안된다.
그러나 gnu ls 를 쓴다면, --sort=version 옵션을 주면 된다. 서모님이 검색해 준 팁.
$ ls --sort=version -1
File.1.txt
File.2.txt
File.3.txt
File.4.txt
File.5.txt
File.6.txt
File.7.txt
File.8.txt
File.9.txt
File.10.txt
File.11.txt
File.12.txt
File.13.txt
File.14.txt
File.15.txt
File.16.txt
File.17.txt
File.18.txt
File.19.txt
File.20.txt
2011년 4월 11일 추가: --sort=version 을 타이핑하기가 귀찮으니 그냥 -v 를 주면 된다 : ls -v -1
굳이 sort 를 이용하려면, 몇가지 옵션을 추가해 주어야 한다 :
$ ls -1 | sort -n -t'.' -k2
File.1.txt
File.2.txt
File.3.txt
File.4.txt
File.5.txt
File.6.txt
File.7.txt
File.8.txt
File.9.txt
File.10.txt
File.11.txt
File.12.txt
File.13.txt
File.14.txt
File.15.txt
File.16.txt
File.17.txt
File.18.txt
File.19.txt
File.20.txt
옵션들의 의미는 man 페이지를 찾아 보도록.