web-dev-qa-db-ja.com

ファイル変更時刻順の降順リスト

ディレクトリ[たとえば、 "/ mnt/hdd/PUB /"]内のファイルのリストを、ファイルの変更時刻順に生成するにはどうすればよいですか? [降順で、最も古い変更されたファイルはリストの最後にあります]

ls -A -lRt素晴らしいでしょう: https://Pastebin.com/raw.php?i=AzuSVmrJ

ただし、ファイルがディレクトリ内で変更された場合、ディレクトリ全体が一覧表示されるため、貼り付けリンクは適切ではありません[「ディレクトリ」順に並べられたリストは必要ありません。「ファイルごと」に並べられたリストが必要です]

OS: OpenWrt [Perlがありません->十分なスペースがありません:(+ "stat"または "file"コマンドがありません]。

3
LanceBaynes

検索と並べ替えを使用します。

find YOUR_START_DIR -type f -print0 |
    xargs -r -0 ls -l | 
        sort -k 6.2,6.5nr \
             -k 6.7,6.8nr \
             -k 6.10,6.11nr \
             -k 7.2,7.3nr \
             -k 7.5,7.6nr

並べ替え後のk個のオプションの長いリストは、年、月、日、時、分を並べ替えキーとして定義し、それらの順序で並べ替えます。

同じ分に保存されたファイルは注文されません。秒以上にしたい場合は、lsコマンドに「--full-time」を追加し、sortコマンドの最後に新しいキーを追加します。

1
rems

Cygwinで部分的に機能する醜い答えは次のとおりです。

 ls -A -lRt --full-time | sort | uniq | grep -v '^total\|:$'
  • ファイルを再帰的に一覧表示し、すべてのファイルの完全なタイムスタンプを表示します
  • それらを並べ替えます
  • 重複を破棄します
  • 「ディレクトリX内のファイルの総数」や、繰り返し使用するファイルのヘッダー行など、ファイル以外のエントリをいくつか削除します。
0

ディレクトリ内のファイルを「変更」すると、ディレクトリの変更時刻が更新される可能性があります。ただし、ディレクトリに興味がない場合は、次のようにgrepしてください。

ls -AlRt | egrep -v '^d'
0
mpez0