ファイル変更時間順に並べられた降順リスト


3

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

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

しかし、ファイルがディレクトリ内で変更された場合、ディレクトリ全体がリストされるため、貼り付けられたリンクは適切ではありません[「ディレクトリ」で順序付けられたリストが必要ないため、「ファイルごと」順序付けリストが必要です)

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


あなたfindは持っています-printfか?ちなみに、可能な場合は回答を承認済みとしてマークし、できる限り頻繁に投票することを忘れないでください。
デニスウィリアムソン

回答:


1

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

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コマンドの最後に新しいキーを追加します。


これは(OPのパイプラインと同様に)の出力の形式に依存しますls
デニスウィリアムソン

確かに、ls出力形式に完全に依存しています。
レム

0

ここにcygwinで私にとって部分的に機能するanswerい答えがあります:

 ls -A -lRt --full-time | sort | uniq | grep -v '^total\|:$'
  • ファイルを再帰的にリストし、すべてのファイルの完全なタイムスタンプを表示します
  • それらをソートします
  • 重複を破棄します
  • 「ディレクトリXの合計ファイル」などのファイル以外のエントリと、再帰するファイルのヘッダー行を削除します。

sort -u代わりにsort | uniq
デニスウィリアムソン

1
これは私にはうまくいきません。この方法でソートすると、行の先頭からアルファベット順に並べ替えられます。
レム

@remsとてもそう...私はそれをさらに1、2時間かけて微調整し、正規表現とsed(および並べ替え-k)について少し学びました。しかし、完璧な解決策は得られませんでした。
ダニエルJ.プリケット

0

ディレクトリ内のファイルを「変更」すると、ディレクトリの変更時間が更新される場合があります。しかし、ディレクトリに興味がない場合は、それらをgrepしてください:

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