올바른 숫자 순서로 파일 이름을 정렬하는 방법

올바른 숫자 순서로 파일 이름을 정렬하는 방법

파일 이름 순서 문제를 해결하는 방법은 무엇입니까?

예를 들어,

ls

생성된 파일은 다음과 같습니다.

basename1
basename11
basename12
basename13
[omitted]
basename2
basename20
basename21
....
basename3

질문

11-19는 2와 3 이전에 구문 분석됩니다.

답변1

다음을 사용하여 정렬할 수 있습니다.

ls basename* | sort -V

정렬을 위한 -V 옵션은 "버전"의 약어이지만 실제로는 "이름 및 번호"를 기준으로 정렬합니다. 이는 사용자가 찾고 있는 것 같습니다. 정렬 매뉴얼 페이지를 참조하십시오.

-V --버전 정렬

 Sort by version name and number.  It behaves like a standard sort,
 except that each sequence of decimal digits is treated numerically
 as an index/version number

그누 ls:

ls -v목록은 버전별로 정렬될 수 있습니다.

답변2

셸을 사용하면 옵션이나 glob 한정자를 사용하여 zsh숫자로 glob을 정렬 할 수 있습니다.numericglobsortn

print -rC1 basename*(n)

lsglob 확장을 명령에 구체적으로 전달 하면 ls자체 어휘 정렬이 수행되므로 해당 zsh.

GNU 구현을 사용하면 해당 옵션을 사용하여 정렬을 비활성화 ls할 수 있습니다 .-U

ls -ldU basename*(n)

관련 정보