Linux で変更日と時刻に基づいてファイルを検索および並べ替える方法
通常、私たちは多くの情報をファイルの形式でシステムに保存する習慣があります。隠しファイルもあれば、わかりやすくするために作成された別のフォルダーに保存されているものもあれば、そのままのものもあります。しかし、これだけでディレクトリがいっぱいになってしまいます。通常はデスクトップなので、乱雑に見えます。しかし、この膨大なコレクションの中から特定の日時に変更された特定のファイルを検索する必要がある場合に問題が発生します。
GUI に慣れている人は、ファイル マネージャーを使用してファイルを見つけることができます。ファイル マネージャーは長いリスト形式でファイルをリストするので、必要なものを簡単に見つけることができますが、黒い画面の習慣のあるユーザーや、GUI のないサーバーで作業している人でも、検索を容易にする単純なコマンドまたは一連のコマンドが必要です。
Linux には、個別にまたは組み合わせて使用すると、名前、変更日、作成時間などに基づいてファイルの検索や並べ替えに役立つコマンドのコレクションがあり、Linux の真の美しさがここに示されています。結果を得るために適用することを考えられるフィルター。
ここでは、 ファイルまたはファイルのリストを日付と時間で並べ替えるのに役立つ一連のコマンドを検討することで、Linux の真の強みを明らかにします。
Linux でファイルを並べ替える Linux ユーティリティ
日付と時間に基づいてディレクトリを並べ替えるのに十分な基本的な Linux コマンド ライン ユーティリティは次のとおりです。
lsコマンド
ls – ディレクトリの内容を一覧表示するこのユーティリティは、ファイルとディレクトリを一覧表示し、変更またはアクセスの日時、権限、サイズ、所有者、グループなどを含むそれらに関するすべてのステータス情報を一覧表示することもできます。 。
Linux の ls コマンド と sort コマンド については、すでに多くの記事で取り上げてきました。以下でご覧いただけます。
- 15 の基本的な例で ls コマンドを学びましょう
- 7 つの高度な ls コマンドを例で学びましょう
- Linux の ls コマンドに関するインタビューで役立つ 15 の質問
ソートコマンド
並べ替え – このコマンドを使用すると、任意のフィールドまたはフィールドの特定の列だけで検索の出力を並べ替えることができます。
Linux のsort コマンドについてはすでに 2 つの記事で取り上げています。以下でご覧いただけます。
- 14 Linux の「sort」コマンドの例 – パート 1
- 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 '
は、出力にファイル名だけでなく、ユーザーが必要とするフィールドを含めることができるため、より便利であることがわかります。
以下のコマンドは、sort
と find
コマンドを使用して、日付と時刻に基づいてファイルのリストを並べ替える方法を示しています。
find コマンドの詳細については、次のリンクを参照してください: 35 Practical Examples of ‘find’ Command in Linux
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'
で指定されたキーを最初のフィールドとして使用して出力を並べ替え、その後、その前にある 'M'
で指定された月で並べ替えます。
# 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
以下のsortコマンドは、最初に年の最後の桁に基づいて並べ替え、次に逆の順序で月の最後の桁に基づいて並べ替え、最後に最初のフィールドに基づいて並べ替えます。ここで、「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 コマンドの知識があれば、任意のフィールドや任意の列に基づいてほぼすべてのリストを並べ替えることができます。これらは、日付または時刻に基づいてファイルを並べ替えるのに役立ついくつかのトリックです。これらに基づいて独自のトリックを構築することができます。ただし、他に興味深いトリックがある場合は、いつでもコメントで言及してください。