find -type f -mmin -30 -exec ls -lt --full-time {} + | sort -k6,7
解説
このコマンドの目的は、過去30分以内に更新されたファイルを探し、そのファイルの詳細情報(更新時刻を含む)を取得し、更新日時でソートすることです。
以下にコマンドを分解して説明します。
1. find -type f -mmin -30
-
find
: ファイルやディレクトリを検索するコマンド。 -
-type f
: ファイルのみを対象とする。 -
-mmin -30
: 最終更新が「30分以内」のファイルを検索。
この部分で、30分以内に更新されたファイルを探します。
2. -exec ls -lt --full-time {} +
-
-exec
:find
の検索結果に対して特定のコマンドを実行するオプション。 -
ls -lt
:ls
コマンドで、更新日時順(降順)に詳細情報を表示。-
-l
: ファイルの詳細情報を表示(権限、サイズ、所有者など)。 -
-t
: 更新日時順にソート(ただし、この時点ではファイル単位の操作)。
-
-
--full-time
: 更新時刻を秒およびミリ秒単位でISO 8601形式で表示。 -
{}
:find
で見つかった各ファイルがここに渡される。 -
+
:find
で見つかったすべてのファイルをまとめてls
に渡す。
この部分で、更新時刻をミリ秒まで含む形式で、詳細なファイル情報を取得します。
3. | sort -k6,7
-
|
: 前のコマンドの出力を次のコマンドに渡す(パイプライン)。 -
sort -k6,7
: 6列目と7列目をキーとしてソート。- 6列目: 更新日の情報(例:
2024-12-05
)。 - 7列目: 更新時刻の情報(例:
12:30:15.123456789
)。 - デフォルトで昇順に並べ替えられます。
- 6列目: 更新日の情報(例:
この部分で、更新日時に基づいて検索結果を並べ替えます。
全体の流れ
-
find
コマンドで、30分以内に更新されたファイルを検索。 - 検索結果に対して
ls -lt --full-time
を実行し、更新日時を含む詳細情報を取得。 - その出力を、更新日(6列目)と更新時刻(7列目)でソートして表示。
出力例
例えば、以下のような出力が得られます。
-rw-r--r-- 1 user group 1024 2024-12-05 12:45:30.123456789 ./recent_file.txt
-rw-r--r-- 1 user group 2048 2024-12-05 12:30:15.987654321 ./another_file.log
この例では、更新日時に基づいて昇順で並んでいます。降順に並べたい場合は、sort -k6,7 -r
としてください。