以下を使用して、「通常の順序」で日付別にソートされた出力を生成できます。
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
結果:
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
答え1
ほとんどのシングルマシンにはオプションがls
あります-t
。man
私のDebianボックスページから:
-t 修正時間に基づいてソート
次のコマンドを試してください。
$ ls -lt
答え2
ソートしたいテキストファイルですか、それとも日付別にリストされたディレクトリを表示しますか?後者の場合、この-t
フラグを使用してくださいls
。前者の場合は、特に-M
3文字の月名の略語でソートするGNUソートフラグを参照してください。次のコマンドは、3番目、1番目、2番目、4番目の列に基づいてソートし、2番目のソートキーを月名として扱います。
sort -k 3 -k 1M -k2 -k4 in.txt
常にYYYY-MM-DD-HH-MM-SSの順に(つまり、最上位、一貫した列幅)、日本/ISOスタイルの日付を使用することをお勧めします。日付順のソートは事前ソートと同じです。
答え3
ls
もともと質問を受けたとき、その機能がコマンドに含まれているかどうかはわかりませんが、オプションがあります--full-time
。
例えば、
ls -t --full-time
以下の最も古い時系列でソートされます。または以下を使用する場合:
ls -tr --full-time
これにより順序が逆になります。
答え4
これにより、すべてのファイルが一覧表示されます。再帰的出力ls
と逆ソート渡す時間の変更(時間):
find -print0 -type f directory_path | xargs -0 ls -ltr
すばやく検索するには、次のコマンドを使用してください。fd
fd -0 -t f directory_path | xargs -0 ls -ltr