如何在 Linux 中根据修改日期和时间查找文件并排序如何在 Linux 中根据修改日期和时间查找文件并排序如何在 Linux 中根据修改日期和时间查找文件并排序如何在 Linux 中根据修改日期和时间查找文件并排序
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 中根据修改日期和时间查找文件并排序

通常,我们习惯于在系统上以文件的形式保存大量信息。有些是隐藏文件,有些保存在为便于理解而创建的单独文件夹中,而有些则保持原样。但是,这一切都填满了我们的目录;通常是桌面,使其看起来很混乱。但是,当我们需要在这个巨大的集合中搜索在特定日期和时间修改的特定文件时,问题就出现了。

熟悉 GUI 的人可以使用文件管理器找到它,它以长列表格式列出文件,使我们很容易找出我们想要的内容,但是那些习惯黑屏的用户,甚至任何在没有 GUI 的服务器上工作的人都会想要一个简单的命令或一组命令来简化他们的搜索。

Linux 的真正魅力在这里展现出来,因为 Linux 有一组命令,如果单独或一起使用,这些命令可以帮助搜索文件,或根据文件名、修改日期、创建时间甚至任何文件对文件集合进行排序。您可以考虑应用过滤器来获得结果。

在这里,我们将通过检查一组命令来揭示 Linux 的真正优势,这些命令可以帮助按日期和时间对文件甚至文件列表进行排序。

在 Linux 中对文件进行排序的 Linux 实用程序

一些足以根据日期和时间对目录进行排序的基本 Linux 命令行实用程序是:

ls 命令

ls – 列出目录内容,该实用程序可以列出文件和目录,甚至可以列出有关它们的所有状态信息,包括:修改或访问的日期和时间、权限、大小、所有者、组等。

我们已经介绍了许多关于 Linux ls 命令 和 sort 命令 的文章,您可以在下面找到它们:

  1. 通过 15 个基本示例学习 ls 命令
  2. 通过示例学习 7 个高级 ls 命令
  3. 关于 Linux 中 ls 命令的 15 个有用的面试问题

排序命令

sort – 此命令可用于仅按任何字段或字段的任何特定列对任何搜索的输出进行排序。

我们已经介绍了两篇关于 Linux sort 命令的文章,您可以在下面找到它们:

  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命令的Output进行排序,也可以使用ls,不过有'sort ' 证明更有帮助,因为输出可能不仅包含文件名,还包含用户所需的任何字段。

以下命令显示如何使用 sort 和 find 命令根据日期和时间对文件列表进行排序。

要了解有关 find 命令的更多信息,请点击以下链接:Linux 中“find”命令的 35 个实用示例

4. 根据月份对文件进行排序

在这里,我们使用 find 命令查找根 ('/') 目录中的所有文件,然后将结果打印为: Month in which file被访问,然后是文件名。在完整的结果中,我们列出了排名前 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

下面的排序命令首先根据年份的最后一位数字排序,然后根据月份的最后一位数字逆序排序,最后根据第一个字段排序。这里,'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 的输出进行排序

此命令根据第 6 个字段月份对 'ls -l' 命令的输出进行排序,然后根据第 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

结论

同样,通过了解排序命令,您可以根据任何字段甚至您想要的任何列对几乎任何列表进行排序。这些是帮助您根据日期或时间对文件进行排序的一些技巧。您可以在此基础上构建自己的技巧。但是,如果您有任何其他有趣的技巧,您可以随时在评论中提及。

©2015-2025 艾丽卡 support@alaica.com