ディレクトリ内の最新の変更されたファイルをサブディレクトリと時刻とともに再帰的に検索して一覧表示する方法 質問する

ディレクトリ内の最新の変更されたファイルをサブディレクトリと時刻とともに再帰的に検索して一覧表示する方法 質問する
  • オペレーティングシステム: Linux

  • ファイルシステムの種類:拡張子3

  • 推奨ソリューション: Bash (スクリプト/ワンライナー)、Ruby、または Python

複数のサブディレクトリとファイルを含む複数のディレクトリがあります。これらのディレクトリすべてのリストを作成し、そのリストは、すべての第 1 レベルのディレクトリが、その中の最後に作成/変更されたファイルの日時の横にリストされるように構成する必要があります。

明確に言うと、ファイルを操作したり、いくつかのサブディレクトリ レベル下のその内容を変更したりした場合、そのタイムスタンプは第 1 レベルのディレクトリ名の横に表示されるはずです。次のような構造のディレクトリがあるとします。

./alfa/beta/gamma/example.txt

ファイルの内容を変更する場合example.txt、エポックではなく、人間が読める形式で第1レベルのディレクトリの横に時間を表示する必要がありますalfa。findを使用していくつかのことを試しました。xargssortなどですが、数レベル下のファイルを作成/変更しても 'alfa' のファイルシステムのタイムスタンプが変更されないという問題を回避できません。

ベストアンサー1

これを試してみてください:

#!/bin/bash
find $1 -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head

再帰的にスキャンを開始するディレクトリへのパスを指定して実行します (スペースを含むファイル名をサポートします)。

ファイルの数が多い場合は、何かが返されるまでに時間がかかることがあります。xargs代わりに以下を使用するとパフォーマンスが向上します。

#!/bin/bash
find $1 -type f -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head

少し速くなります。

おすすめ記事