s3cmd ls 出力を日付でソートする方法は?

s3cmd ls 出力を日付でソートする方法は?

名前に含まれる日付に基づいてs3リポジトリのディレクトリをソートしたいと思います。

私が走るとき

s3cmd ls s3://xyz/private/backups/mails/daily/ | awk '{print $2}'

次のディレクトリを一覧表示します。

s3://xyz/private/backups/mails/daily/01_Apr_2020/
s3://xyz/private/backups/mails/daily/02_Apr_2020/
s3://xyz/private/backups/mails/daily/03_Apr_2020/
s3://xyz/private/backups/mails/daily/04_Apr_2020/
s3://xyz/private/backups/mails/daily/05_Apr_2020/
s3://xyz/private/backups/mails/daily/06_Apr_2020/
s3://xyz/private/backups/mails/daily/07_Apr_2020/
s3://xyz/private/backups/mails/daily/08_Apr_2020/
s3://xyz/private/backups/mails/daily/09_Apr_2020/
s3://xyz/private/backups/mails/daily/10_Apr_2020/
s3://xyz/private/backups/mails/daily/11_Apr_2020/
s3://xyz/private/backups/mails/daily/12_Apr_2020/
s3://xyz/private/backups/mails/daily/13_Apr_2020/
s3://xyz/private/backups/mails/daily/14_Apr_2020/
s3://xyz/private/backups/mails/daily/15_Apr_2020/
s3://xyz/private/backups/mails/daily/30_Mar_2020/
s3://xyz/private/backups/mails/daily/31_Mar_2020/

日付順に表示したいです。

s3://xyz/private/backups/mails/daily/30_Mar_2020/
s3://xyz/private/backups/mails/daily/31_Mar_2020/
s3://xyz/private/backups/mails/daily/01_Apr_2020/
s3://xyz/private/backups/mails/daily/02_Apr_2020/
s3://xyz/private/backups/mails/daily/03_Apr_2020/
....
....

列で並べ替えてみました。-中(月)フラグがありますが動作しません。

私の目標は、以下より古いものを削除することです。N数日が過ぎたが、それ以来s3cmdlsはディレクトリの作成/変更日を返さないため、これを困難にする必要がありました。

どうすればいいですか?

ベストアンサー1

... |
awk -F'[/_]' '{printf "%04d%02d%02d %s\n", $(NF-1), index("  JanFebMarAprMayJunJulAugSepOctNovDec",$(NF-2))/3, $(NF-3), $0}' |
sort |
sed 's/[0-9]* //'

あります。2スペース" Jan...";これはバグではありません。 awkのインデックスは、他の言語のようにゼロではなく1から始まります。

おすすめ記事