Linuxでの修正日付と時刻に基づいてファイルを検索およびソートする方法

通常、私たちはシステム上のファイルの形で多くの情報を保存する習慣があります。いくつかは隠しファイルであり、いくつかは私たちの理解のために作成された別のフォルダに保管されており、そのままの状態のものもあります。しかし、このすべてのものが私たちのディレクトリを埋めてしまい、通常はデスクトップのように見えます。しかし、この巨大なコレクションの中から特定の日付と時間に変更された特定のファイルを検索する必要が生じると問題が発生します。

Find and Sort Files by Date and Time in Linux

GUIに慣れている人々は、ファイルマネージャーを使用してそれを見つけることができます。ファイルマネージャーは、ファイルを長いリスト形式でリストアップして、必要なものが何であるかを簡単に把握できるようにします。しかし、黒い画面に慣れているユーザー、またはGUIのないサーバーで作業しているユーザーは、簡単に検索を行うための単純なコマンドまたはコマンドのセットを望むでしょう。

ここでLinuxの真の美しさが現れます。Linuxには、ファイルを検索したり、名前、変更日、作成時間、さらには結果を取得するために適用できるフィルターなど、さまざまなコマンドがあります。

ここでは、ファイルやファイルのリストを日付時間によってソートするのに役立つ一連のコマンドを検証して、Linuxの真の力を明らかにします。

LinuxでファイルをソートするためのLinuxユーティリティ

日付と時間に基づいてディレクトリを整理するのに十分な基本的なLinuxコマンドラインユーティリティは次のとおりです:

lsコマンド

ls – ディレクトリの内容をリストアップするためのユーティリティで、ファイルやディレクトリのリストを表示し、それらの状態情報すべて(変更またはアクセスの日時、権限、サイズ、所有者、グループなど)をリストアップすることができます。

Linuxのlsコマンドsortコマンドについては、すでに多くの記事を取り上げています。以下で見つけることができます:

  1. 15の基本的なlsコマンドの例でlsコマンドを学ぶ
  2. 例を挙げて7つの高度なlsコマンドを学ぶ
  3. Linuxでのlsコマンドに関する15の有用なインタビューの質問

sortコマンド

sort – このコマンドは、任意の検索の出力を、任意のフィールドまたは特定の列のフィールドでソートするために使用できます。

Linuxのsortコマンドに関する2つの記事をすでに取り上げています。以下で見つけることができます:

  1. 14のLinuxの「sort」コマンドの例 – パート1
  2. 7つの便利なLinuxの「sort」コマンドの例 – パート2

これらのコマンドは、黒い画面で作業して大量のファイルを扱い、必要なファイルを取得するために使用する場合、非常に強力なコマンドであり、マスターする価値があります。

日付と時刻を使用してファイルをソートするいくつかの方法

以下は、日付と時刻に基づいてソートするためのコマンドのリストです。

1. 変更時間に基づいてファイルをリスト

次のコマンドは、長いリスト形式でファイルをリストし、変更時間に基づいてファイルをソートします。最新のものから始めます。逆順にソートするには、このコマンドで'-r'スイッチを使用します。

# ls -lt

total 673768
-rwxr----- 1 tecmint tecmint  3312130 Jan 19 15:24 When You Are Gone.MP3
-rwxr----- 1 tecmint tecmint  4177212 Jan 19 15:24 When I Dream At Night - Marc Anthony-1.mp3
-rwxr----- 1 tecmint tecmint  4177212 Jan 19 15:24 When I Dream At Night - Marc Anthony.mp3
-rwxr----- 1 tecmint tecmint  6629090 Jan 19 15:24 Westlife_Tonight.MP3
-rwxr----- 1 tecmint tecmint  3448832 Jan 19 15:24 We Are The World by USA For Africa (Michael Jackson).mp3
-rwxr----- 1 tecmint tecmint  8580934 Jan 19 15:24 This Love.mp3
-rwxr----- 1 tecmint tecmint  2194832 Jan 19 15:24 The Cross Of Changes.mp3
-rwxr----- 1 tecmint tecmint  5087527 Jan 19 15:24 T.N.T. For The Brain 5.18.mp3
-rwxr----- 1 tecmint tecmint  3437100 Jan 19 15:24 Summer Of '69.MP3
-rwxr----- 1 tecmint tecmint  4360278 Jan 19 15:24 Smell Of Desire.4.32.mp3
-rwxr----- 1 tecmint tecmint  4582632 Jan 19 15:24 Silence Must Be Heard 4.46.mp3
-rwxr----- 1 tecmint tecmint  4147119 Jan 19 15:24 Shadows In Silence 4.19.mp3
-rwxr----- 1 tecmint tecmint  4189654 Jan 19 15:24 Sarah Brightman  & Enigma - Eden (remix).mp3
-rwxr----- 1 tecmint tecmint  4124421 Jan 19 15:24 Sade - Smooth Operator.mp3
-rwxr----- 1 tecmint tecmint  4771840 Jan 19 15:24 Sade - And I Miss You.mp3
-rwxr----- 1 tecmint tecmint  3749477 Jan 19 15:24 Run To You.MP3
-rwxr----- 1 tecmint tecmint  7573679 Jan 19 15:24 Roger Sanchez_Another Chance_Full_Mix.mp3
-rwxr----- 1 tecmint tecmint  3018211 Jan 19 15:24 Principal Of Lust.3.08.mp3
-rwxr----- 1 tecmint tecmint  5688390 Jan 19 15:24 Please Forgive Me.MP3
-rwxr----- 1 tecmint tecmint  3381827 Jan 19 15:24 Obvious.mp3
-rwxr----- 1 tecmint tecmint  5499073 Jan 19 15:24 Namstey-London-Viraaniya.mp3
-rwxr----- 1 tecmint tecmint  3129210 Jan 19 15:24 MOS-Enya - Only Time (Pop Radio mix).m

2. 最後のアクセス時間に基づいてファイルをリスト

ディレクトリ内のファイルのリストは、最後のアクセス時間、つまりファイルが最後にアクセスされた時間、変更された時間に基づいています。

# ls -ltu

total 3084272
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:24 Music
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Linux-ISO
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Music-Player
drwx------  3 tecmint tecmint       4096 Jan 19 15:22 tor-browser_en-US
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 bin
drwxr-xr-x 11 tecmint tecmint       4096 Jan 19 15:22 Android Games
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Songs
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 renamefiles
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 katoolin-master
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Tricks
drwxr-xr-x  3 tecmint tecmint       4096 Jan 19 15:22 Linux-Tricks
drwxr-xr-x  6 tecmint tecmint       4096 Jan 19 15:22 tuptime
drwxr-xr-x  4 tecmint tecmint       4096 Jan 19 15:22 xdm
drwxr-xr-x  2 tecmint tecmint      20480 Jan 19 15:22 ffmpeg usage
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 xdm-helper

3. ファイルの最終変更時間に基づいてファイルをリスト

ディレクトリ内のファイルのリストは、ファイルのステータス情報の最終変更時間、または'ctime'に基づいています。このコマンドは、オーナー、グループ、パーミッション、サイズなどのステータス情報が最近変更されたファイルを最初にリストします。

# ls -ltc

total 3084272
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:24 Music
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 13:05 img
-rw-------  1 tecmint tecmint     262191 Jan 19 12:15 tecmint.jpeg
drwxr-xr-x  5 tecmint tecmint       4096 Jan 19 10:57 Desktop
drwxr-xr-x  7 tecmint tecmint      12288 Jan 18 16:00 Downloads
drwxr-xr-x 13 tecmint tecmint       4096 Jan 18 15:36 VirtualBox VMs
-rwxr-xr-x  1 tecmint tecmint        691 Jan 13 14:57 special.sh
-rw-r--r--  1 tecmint tecmint     654325 Jan  4 16:55 powertop-2.7.tar.gz.save
-rw-r--r--  1 tecmint tecmint     654329 Jan  4 11:17 filename.tar.gz
drwxr-xr-x  3 tecmint tecmint       4096 Jan  4 11:04 powertop-2.7
-rw-r--r--  1 tecmint tecmint     447795 Dec 31 14:22 Happy-New-Year-2016.jpg
-rw-r--r--  1 tecmint tecmint         12 Dec 18 18:46 ravi
-rw-r--r--  1 tecmint tecmint       1823 Dec 16 12:45 setuid.txt
...

上記のコマンドで'-a'スイッチを使用すると、現在のディレクトリ内の隠しファイルもリストおよびソートでき、'-r'スイッチを使用すると、出力を逆順にリストできます。

より詳細なソート、たとえば出力に基づいてソートする場合findコマンド、ただしlsも使用できますが、'sort'はより役立ちます。ユーザーが希望するフィールドだけでなく、ファイル名だけでなく出力されます。

以下のコマンドは、findコマンドを使用してファイルのリストを日付時間に基づいてソートする方法を示しています。

findコマンドについて詳しくは、次のリンクを参照してください: Linuxでの’find’コマンドの35の実用例

4. 月に基づいてファイルをソートする

ここでは、findコマンドを使用してルートディレクトリ('/')内のすべてのファイルを検索し、ファイルがアクセスされたとその後のファイル名を出力します。その完全な結果から、ここではトップ11のエントリをリストアップします。

# find / -type f -printf "\n%Ab %p" | head -n 11

Dec /usr/lib/nvidia/pre-install
Dec /usr/lib/libcpufreq.so.0.0.0
Apr /usr/lib/libchromeXvMCPro.so.1.0.0
Apr /usr/lib/libt1.so.5.1.2
Apr /usr/lib/libchromeXvMC.so.1.0.0
Apr /usr/lib/libcdr-0.0.so.0.0.15
Dec /usr/lib/msttcorefonts/update-ms-fonts
Nov /usr/lib/ldscripts/elf32_x86_64.xr
Nov /usr/lib/ldscripts/elf_i386.xbn
Nov /usr/lib/ldscripts/i386linux.xn

以下のコマンドは、最初のフィールドをキーとして出力をソートし、その後に指定された'-k1'を使用して月をソートします。

# find / -type f -printf "\n%Ab %p" | head -n 11 | sort -k1M

Apr /usr/lib/libcdr-0.0.so.0.0.15
Apr /usr/lib/libchromeXvMCPro.so.1.0.0
Apr /usr/lib/libchromeXvMC.so.1.0.0
Apr /usr/lib/libt1.so.5.1.2
Nov /usr/lib/ldscripts/elf32_x86_64.xr
Nov /usr/lib/ldscripts/elf_i386.xbn
Nov /usr/lib/ldscripts/i386linux.xn
Dec /usr/lib/libcpufreq.so.0.0.0
Dec /usr/lib/msttcorefonts/update-ms-fonts
Dec /usr/lib/nvidia/pre-install

5. 日付に基づいてファイルをソートする

ここでは、再びfindコマンドを使用してルートディレクトリ内のすべてのファイルを検索しますが、今回はファイルがアクセスされた最終日最終時間、そしてファイル名を出力します。その中からトップ11のエントリを取得します。

# find / -type f -printf "\n%AD %AT %p" | head -n 11

12/08/15 11:30:38.0000000000 /usr/lib/nvidia/pre-install
12/07/15 10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
04/11/15 06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
04/11/15 06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
04/11/15 06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
04/11/15 06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
12/18/15 11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

以下のソートコマンドは、まず年の最後の数字でソートし、次に逆順で月の最後の数字でソートし、最後に最初のフィールドでソートします。ここで、’1.8‘は最初のフィールドの8番目の列を意味し、‘n’は数値ソートを意味し、‘r’は逆順ソートを示します。

# find / -type f -printf "\n%AD %AT %p" | head -n 11 | sort -k1.8n -k1.1nr -k1

12/07/15 10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
12/08/15 11:30:38.0000000000 /usr/lib/nvidia/pre-install
12/18/15 11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn
04/11/15 06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
04/11/15 06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
04/11/15 06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
04/11/15 06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0

6. 時間に基づいてファイルをソート

ここでは、再度findコマンドを使用して、ルートディレクトリ内のトップ11ファイルをリストアップし、結果を「最終アクセス時刻」とその後にファイル名の形式で出力します。

# find / -type f -printf "\n%AT %p" | head -n 11

11:30:38.0000000000 /usr/lib/nvidia/pre-install
10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

以下のコマンドは、出力の最初のフィールドの最初の数字である時間の最初の列に基づいて出力をソートします。

# find / -type f -printf "\n%AT %p" | head -n 11 | sort -k1.1n

06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11:30:38.0000000000 /usr/lib/nvidia/pre-install
12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

7. 日付に基づいたls -lの出力のソート

このコマンドは、'ls -l'コマンドの出力を、月ごとに基づいて6番目のフィールド、次いで数値である7番目のフィールドでソートします。

# ls -l | sort -k6M -k7n

total 116
-rw-r--r-- 1 root root     0 Oct  1 19:51 backup.tgz
drwxr-xr-x 2 root root  4096 Oct  7 15:27 Desktop
-rw-r--r-- 1 root root 15853 Oct  7 15:19 powertop_report.csv
-rw-r--r-- 1 root root 79112 Oct  7 15:25 powertop.html
-rw-r--r-- 1 root root     0 Oct 16 15:26 file3
-rw-r--r-- 1 root root    13 Oct 16 15:17 B
-rw-r--r-- 1 root root    21 Oct 16 15:16 A
-rw-r--r-- 1 root root    64 Oct 16 15:38 C

結論

同様に、sortコマンドの知識を持つことで、ほぼすべてのリストを任意のフィールドに基づいてソートし、希望する任意の列にもソートできます。これらは、日付や時間に基づいてファイルをソートするのに役立ついくつかのテクニックでした。これを基に独自のテクニックを構築することができます。ただし、他に興味深いテクニックがある場合は、常にコメントでそれを言及することができます。

Source:
https://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/