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
전달해 보세요 .-k2
sort
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)