저는 Ubuntu 22를 사용하고 있으며 다른 위치에 숫자 값이 포함된 성가신 이름을 가진 큰 파일 트리가 있습니다. 그것은 다음과 같습니다:
./2
./2/9
./2/10
./2/8
./1
./1/2
./1/1
./1/11
./11
./11/page 6
./11/page 05
./11/page 4
"페이지"와 같은 것을 무시하고 숫자 값을 기준으로 정렬하여 다음을 얻습니다.
./1/1
./1/2
./1/11
./2/8
./2/9
./2/10
./11/page 4
./11/page 05
./11/page 6
나는 이것을 시도했지만 sort -n
첫 번째 수준 디렉터리 이름만 보더라도 예상한 대로 작동하지 않는 것 같습니다.
$ find . -mindepth 1 -type d | sort -n
./1
./11
./2
"(숫자 대신) 각 정수로 정렬"하는 편리한 옵션이 있나요?
답변1
sort -V
적어도 예제의 단순성을 고려하면 이것이 원하는 것 같습니다 .
$ sort -V << EOF
./2
./2/9
./2/10
./2/8
./1
./1/2
./1/1
./1/11
./11
./11/page 6
./11/page 05
./11/page 4
EOF
./1
./1/1
./1/2
./1/11
./2
./2/8
./2/9
./2/10
./11
./11/page 4
./11/page 05
./11/page 6
한 가지 알려진 주의 사항: 이는 문자열의 "페이지"와 같은 텍스트를 "무시"하지 않고 정렬 순서에만 포함합니다. "행"과 동일한 번호가 있는 다른 항목이 있는 경우 "행" 항목이 "페이지" 항목보다 먼저 정렬됩니다.
하지만 일반적으로 이 방법이 효과가 없다면편집하다게시물을 업데이트하고 올바르게 해결되지 않은 사례 사례를 표시하도록 사례를 업데이트하세요.
답변2
zsh와 그 사용글로벌 예선
N
NULL_GLOB 옵션 설정.
순수한 파일만 선택하십시오(예: 디렉토리, 심볼릭 링크, fifo, 장치 생략...)n
NUMERIC_GLOB_SORT 옵션을 켜세요
그래서
% print -rC1 -- **/*(N.n)
1/1
1/2
1/11
2/8
2/9
2/10
11/page 4
11/page 05
11/page 6