영숫자 파일 이름을 사용하여 정렬

영숫자 파일 이름을 사용하여 정렬

find현재 디렉터리의 모든 파일을 찾는 명령의 결과를 정렬하고 있습니다.

find . -maxdepth 1 -type f -iname "*.flac" | sort

내가 기대하는 것은 다음과 같은 목록입니다.

./Track 1.flac
./Track 2.flac
./Track 3.flac
...
./Track 9.flac
./Track 10.flac
./Track 11.flac

내가 얻는 것은 다음과 같은 목록입니다.

./Track 10.flac
./Track 11.flac
./Track 1.flac
./Track 2.flac
./Track 3.flac
...
./Track 9.flac

sort숫자가 올바르게 평가되도록 영숫자 오름차순으로 정렬하는 옵션이 있습니까 ?

답변1

.IE 에 명령줄 옵션을 -n전달해 보세요 .-k2sort

find . -maxdepth 1 -type f -iname "*.flac" | sort -n -k2

정렬되지 않은 파일 이름을 "data.txt" 파일에 넣고 다음 명령을 실행하면:

sort -k2 -n data.txt

나는 이것을 출력으로 얻습니다.

./Track 1.flac
./Track 2.flac
./Track 3.flac
./Track 9.flac
./Track 10.flac
./Track 11.flac

옵션 설명:

-n (numeric sort) compare according to string numerical value
-k2 means sort on the 2nd field (and to the end of the line), 
    you could just restrict it to the second field with -k2,2

이건 물어보지도 않았고 위에서도 사용하지 않았지만 언젠가는 유용하게 쓰일 수도 있겠네요.

-r reverse sort order 

매뉴얼 페이지~을 위한sort

다양한 필드를 기반으로 한 정렬에 대한 내 관련 게시물을 참조하세요.첫 번째와 두 번째 열은 변경하지 않고 세 번째 열을 기준으로 정렬(Linux)정렬 명령에 대한 자세한 내용은 여기에 설명되어 있습니다.

답변2

zsh에서는 다음을 사용하십시오.n 와일드카드 한정자:

print -l *.flag(n)

관련 정보