次のファイルのリストがあります。
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.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
例えば。