다단계 숫자 경로 정렬

다단계 숫자 경로 정렬

저는 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와 그 사용글로벌 예선

  • NNULL_GLOB 옵션 설정
  • .순수한 파일만 선택하십시오(예: 디렉토리, 심볼릭 링크, fifo, 장치 생략...)
  • nNUMERIC_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

관련 정보