元の:
2011年1月23日10:42 SOMETHING 2007.12.20.avi 2009年6月26日SOMETHING 2009.06.25.avi 2010年2月12日SOMETHING 2010.02.11.avi 2011年1月29日09:17 SOMETHING 2011.01.27.avi 2011年2月11日20:06 SOMETHING 2011.02.10.avi 2011年2月27日23:05 SOMETHING 2011.02.24.avi
出力:
2011年2月27日23:05 SOMETHING 2011.02.24.avi 2011年2月11日20:06 SOMETHING 2011.02.10.avi 2011年1月29日09:17 SOMETHING 2011.01.27。 avi 2011年1月23日10:42 SOMETHING 2007.12.20.avi Feb 12 2010 SOMETHING 2010.02.11.avi 2009年6月26日SOMETHING 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
最新のファイルが一番上にある出力を取得するにはどうすればよいですか?
ほとんどのユニスでは、ls
には-t
オプション。私のDebianボックスのman
ページから:
-t変更時刻で並べ替え
次のコマンドを試してください。
$ ls -lt
ソートしようとしているのはテキストファイルですか、それともディレクトリリストを日付順に表示しようとしているのですか?後者の場合、 (-t
フラグをls
に変更します。前者については、特に-M
フラグをGNU並べ替え、3文字の月名の省略形で並べ替えます。次のコマンドは、3番目、1番目、2番目、4番目の列で並べ替え、2番目の並べ替えキーを月名として扱います。
sort -k 3 -k 1M -k2 -k4 in.txt
常に日本語/ ISOスタイルの日付を常にYYYY-MM-DD-HH-MM-SSの順序で使用することを検討してください(つまり、最初に最も重要な、一定の列幅)。このように、日付によるソートは、辞書式ソートと同じです。
元の質問が尋ねられたときに機能がls
コマンドに含まれていたかどうかはわかりませんが、オプション--full-time
を使用できるようになりました。
例えば。、
ls -t --full-time
一番古いものから順に並べ替えます。または使用する場合:
ls -tr --full-time
次に、順序を逆にします。