数字と文字を逆順に並べ替えますか?

数字と文字を逆順に並べ替えますか?

次のファイルのリストがあります。

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つの主張のみが有効です。そのため、数字や逆順でのみソートできます。 2つを同時に動作させるにはどうすればよいですか?

答え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.pngf199、鍵100119329_a99.pngはですa101

これらのファイルに対して他のタスクを実行するには、次のようにします。

for file ( *_?[0-9][0-9].png(Oe['REPLY=$REPLY[-7]$((200-REPLY[-6,-5]))']) )
  anything-else-with -- $file

例えば。

関連情報