다음과 같은 이름을 가진 파일이 많이 있습니다.
beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf
num
나는 이러한 파일 이름 목록을 다양한 s별로 정렬하고 정렬된 목록을 다양한 명령줄 유틸리티에 전달할 수 있기 를 원합니다 . 예를 들어, 기준으로 정렬하면 num2
원하는 순서는 다음과 같습니다.
beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf
이 작업을 수행하는 Python 스크립트가 있지만 다음과 같습니다.~해야 한다sed
및 같은 필터 외에는 아무것도 불가능합니다 sort
.
일반적인 명령줄 필터를 사용하여 파일 이름의 일부를 기준으로 쉽게 정렬할 수 있는 방법이 있습니까?
답변1
sort
옵션이 있는 GNU는 -g(--general-numeric-sort)
이것을 할 수 있어야 합니다
sort -k5,5g -t '_' <<!
beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf
!
beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf