同じプレフィックスを持つ複数の名前があり、プレフィックスがわかりません。
名前の数字で並べ替えたいです。
つまり
abcd_006-123
abcd_006-232
bbcd_w_006-112
だからbbcd_w_006-112
それが最初でなければなりません。
ありがとう
ベストアンサー1
を使用すると、zsh
次のグローバルソート機能を定義できます。
digitsOnly() REPLY=${REPLY//[^0-9]} # removes all non-digits
次に、次のように使用します。
print -rC1 -- *(no+digitsOnly)
ここで、n
glob修飾子はオプションを対応するnumericglobsort
glob拡張に変換し、出力(by)に基づいてo+function
ソート$REPLY
しますfunction
。
print -rC1
対応するパラメータawをolumnに印刷しますr
。1
c
を使用すると、ls
印刷ls
する前にファイルのリストがデフォルトでアルファベット順にソートされます。 GNU実装では、ls
次のオプションを使用してソートを回避できます-U
。
ls -ldU -- *(no+digitsOnly)
次のようにすることができますperl
:
perl -le 'sub digitsOnly {$_=shift; s/\D//gr};
print for sort {digitsOnly($a) <=> digitsOnly($b)} <*>'
または、次のファイルリストに対してコマンドを実行します。
perl -l0e 'sub digitsOnly {$_=shift; s/\D//gr};
print for sort {digitsOnly($a) <=> digitsOnly($b)} <*>' |
xargs -r0 ls -ldU --