다음과 같은 파일 목록이 있습니다.
100119329_d01.png
100119329_d08.png
100119329_d02.png
100119329_d05.png
100119329_d03.png
100119329_d04.png
100119329_d07.png
100119329_f02.png
100119329_f01.png
다음 출력을 얻기 위해 숫자로 정렬한 다음 이전 문자로 역순으로 정렬하고 싶습니다.
100119329_f01.png
100119329_f02.png
100119329_d01.png
100119329_d02.png
100119329_d03.png
100119329_d04.png
100119329_d05.png
100119329_d07.png
100119329_d08.png
나는 시도했다:
cat <file> |sort -k1.11r -k1.12,1.13n
그러나 한 번에 하나의 주장만 유효합니다. 그래서 숫자나 역순으로만 정렬할 수 있습니다. 두 가지를 동시에 작동시키려면 어떻게 해야 합니까?
답변1
11번째 문자만 역순으로 정렬합니다.
sort -k1.11,1.11r -k1.12,1.13n infile
이 경우(0으로 채워진 숫자) 간단히 실행할 수 있습니다.
sort -k1.11,1.11r infile
답변2
이후에 zsh를 사용하여 해당 순서대로 파일을 처리하는 것이 목표인 경우 glob 한정자를 사용하여 정렬을 수행할 수 있습니다.
$ print -rC1 -- *_?[0-9][0-9].png(Oe['REPLY=$REPLY[-7]$((200-REPLY[-6,-5]))'])
100119329_f01.png
100119329_f02.png
100119329_d01.png
100119329_d02.png
100119329_d03.png
100119329_d04.png
100119329_d05.png
100119329_d07.png
100119329_d08.png
정렬 키를 다음과 같이 정의하는 일부 코드의 평가를 기반으로 O
역방향(대문자)으로 정렬 합니까?e
편지이미 200명을 팔로우했습니다 -숫자. 그래서 열쇠 100119329_f01.png
는 f199
, 열쇠 100119329_a99.png
는 입니다 a101
.
이러한 파일에 대해 다른 작업을 수행하려면 다음을 수행하십시오.
for file ( *_?[0-9][0-9].png(Oe['REPLY=$REPLY[-7]$((200-REPLY[-6,-5]))']) )
anything-else-with -- $file
예를 들어.