파일 정렬에 대한 질문이 있습니다. 내 질문은 정렬에 대한 다른 질문과 다릅니다. 아래와 같이 수백 개의 파일이 있는 폴더가 있습니다.
anacovaux_1052_summary_betai.out
anacovaux_1052_summary_Pdelta.out
anacovaux_1052_summary_pij.out
anacovaux_1053_DIC.out
anacovaux_1053_summary_betai.out
anacovaux_1053_summary_beta_params.out
anacovaux_1048_DIC.out
anacovaux_1048_summary_betai.out
anacovaux_1043_summary_pi_xtx.out
anacovaux_1058_DIC.out
숫자로 정렬할 수 있는 방법이 있는지 궁금합니다. 내 말은 다음과 같은 것을 얻는다는 것입니다.
anacovaux_1043_summary_pi_xtx.out
anacovaux_1048_DIC.out
anacovaux_1048_summary_betai.out
anacovaux_1052_summary_betai.out
anacovaux_1052_summary_Pdelta.out
anacovaux_1052_summary_pij.out
anacovaux_1053_DIC.out
anacovaux_1053_summary_betai.out
anacovaux_1053_summary_beta_params.out
anacovaux_1058_DIC.out
답변1
GNU coreutils 사용 ls
(대부분의 Linux 시스템에서 기본값):
$ ls -v -1
-1
파일 이름에 있는 숫자의 자연 정렬 순서("버전 정렬", )를 사용하여 정렬된 열( )에 파일 이름이 나열 됩니다 -v
. 이는 모든 파일 이름이 실제 숫자( anacovaux_
예:) 까지 동일한 접두어 문자열을 갖는다고 가정합니다 .
GNU가 없는 시스템의 경우 ls
:
$ print '%s\n' * | sort -t '_' -k2,2n
_
그러면 이름의 첫 번째 문자 다음에 숫자순으로 이름이 정렬됩니다. 다시 말하지만, 파일 이름 접두사가 일정하다고 가정합니다(이 솔루션은 완전히 작동합니다).소홀히 하다첫 번째까지 접두사 _
).
답변2
사용자 정의 정렬 순서로 폴더의 파일을 나열하려면 다음을 수행하십시오.
ls -1 yourfolder | sort -t'_' -k2,2n