日付で並べ替え


17

元の:

2011年1月23日10:42何か2007.12.20.avi
2009年6月26日何か2009.06.25.avi
2010年2月12日何か2010.02.11.avi
2011年1月29日09:17何か2011.01.27.avi
2011年2月11日20:06何か2011.02.10.avi
2011年2月27日23:05何か2011.02.24.avi

出力:

2011年2月27日23:05何か2011.02.24.avi
2011年2月11日20:06何か2011.02.10.avi
2011年1月29日09:17何か2011.01.27.avi
2011年1月23日10:42何か2007.12.20.avi
2010年2月12日何か2010.02.11.avi
2009年6月26日何か2009.06.25.avi

上記のリスト(オリジナル)を生成しました:

ls -A -lR | grep "^-" | sed "s/.\{43\}/&\n/" | grep -v "^-" | while read ONELINE; do if echo $ONELINE | cut -d " " -f3 | grep -o '[0-9][0-9]:[0-9][0-9]' > /dev/null 2>&1; then echo $ONELINE | sed "s/.\{7\}/&$(date +%Y) /"; else echo $ONELINE; fi; done

最新のファイルが一番上にある出力を取得するにはどうすればよいですか?


2
@ user4724:yuoはどのようにリストを生成しましたか?

@ user4724:それはあなたが持っているものと同じタイプのアウトプットを生成しません-ジルが答えを

回答:



14

それはソートしようとしているテキストファイルですか、それともディレクトリリストを日付順に表示しようとしていますか?後者の場合、-tフラグを使用しlsます。前者については、特に-M3文字の月名の略語でソートするGNUソートのフラグを参照してください。次のコマンドは、3番目、1番目、2番目、4番目の列でソートし、2番目のソートキーを月名として扱います。

sort -k 3 -k 1M -k2 -k4 in.txt

常にYYYY-MM-DD-HH-MM-SSの順序で、常に日本語/ ISOスタイルの日付を使用することを検討してください(つまり、最上位が最初、一定の列幅)。この方法での日付によるソートは、辞書式ソートと同じです。


その日付形式の提案の先頭のゼロを忘れないでください。これは、文字列を自分でフォーマットするときに使用するフォーマットです。
盗難

@stolenmomentスペースを気にしない場合は、ゼロの代わりにスペースを使用できます。重要なポイントは、定数列です。2018  5 26ちょうど同様に動作し2018 05 26、何も動作しません(あなたがマージ連続するスペース...というマークアップを経由しない限りとして)です2018 5 26
ジル 'SO-悪であるのをやめる'

ええ、私はファイル名にスペースを再帰的に使用しません。理由を推測できると確信しています。
盗難

3

ls元の質問が尋ねられたときに機能がコマンドにあったかどうかはわかりませんが、今ではオプションを使用できます--full-time

例えば、

ls -t --full-time 

一番下の最も古い時間でソートされます。または使用する場合:

ls -tr --full-time

その後、順序が逆になります。


問題は、変更日時でファイルをソートする方法についてです。-tオプションでは、完全にその質問に答えます。--full-timeあまり関係ありません。
G-Manが「Reinstate Monica」と言う

唯一の-tオプションは、6か月以内に変更されたファイルの年を提供しません。ただし、-full-timeが正確にそれを提供します。時間スタイルを使用して、好みの日付形式をフォーマットすることもできます。例ls -ltr --time-style +%Y-%m-%d \%H:%M:%S
ベヴァントーマス

あなたのポイントが何なのか分かりません。  ls -tファイルのモードと所有者、ホスト名とオペレーティングシステムのバージョン、または中国のお茶の価格も提供しません。  ls -t変更日も表示されません。しかし、問題はファイル情報を表示することではなく、変更日でファイルをソートすることです。あなたは質問の答えに貢献していません。知っておきたい補足情報を追加している。50 レピュテーションポイントを獲得したら、そのような情報をコメントとして投稿できます。
G-Manが「Reinstate Monica」と言う

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.