0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

bashで30分以内に更新されたファイルを取得し、更新日時で並び替え

Last updated at Posted at 2024-12-05
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)。
    • デフォルトで昇順に並べ替えられます。

この部分で、更新日時に基づいて検索結果を並べ替えます。


全体の流れ

  1. findコマンドで、30分以内に更新されたファイルを検索。
  2. 検索結果に対してls -lt --full-timeを実行し、更新日時を含む詳細情報を取得。
  3. その出力を、更新日(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としてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?