如何在 Linux 中查找最近或今天修改的文件
在本文中,我们将解释两个简单的命令行技巧,使您能够仅列出今天的所有文件。
Linux 用户在命令行上遇到的常见问题之一是定位具有特定名称的文件,如果您真正知道文件名,那么这会变得容易得多。
home
但是,假设您忘记了当天早些时候创建的文件的名称(在包含数百个文件的文件夹中),但又需要紧急使用。
以下是仅列出您今天创建或修改(直接或间接)的所有文件的不同方法。
1.使用 ls 命令,您只能列出主文件夹中今天的文件,如下所示,其中:
-a
– 列出所有文件,包括隐藏文件-l
– 启用长列表格式--time-style=FORMAT
– 以指定的格式显示时间+%D
– 以 %m/%d/%y 格式显示/使用日期
# ls -al --time-style=+%D | grep 'date +%D'
此外,您可以通过添加以下标志按字母顺序对结果列表进行排序-X
:
# ls -alX --time-style=+%D | grep 'date +%D'
您还可以使用标志根据大小(最大优先)列出-S
:
# ls -alS --time-style=+%D | grep 'date +%D'
2.同样,可以使用find 命令,该命令实际上比ls更灵活,并提供了很多选项,其目的与下面相同。
-maxdepth
level 用于指定在起点(在本例中为当前目录)以下的级别(以子目录为单位)执行搜索操作。-newerXY
,如果相关文件的时间戳 X比文件引用的时间戳 Y新,则此方法有效。X 和 Y 代表以下任意字母:- a – 文件引用的访问时间
- B – 文件引用的诞生时间
- c – inode 状态改变参考时间
- m – 文件引用的修改时间
- t – 引用直接解释为时间
这意味着,只会考虑2016-12-06修改的文件:
# find . -maxdepth 1 -newermt "2016-12-06"
重要提示:在上面的find 命令中使用正确的日期格式作为参考,一旦使用错误的格式,您将收到如下错误:
# find . -maxdepth 1 -newermt "12-06-2016" find: I cannot figure out how to interpret '12-06-2016' as a date or time
或者,使用以下正确的格式:
# find . -maxdepth 1 -newermt "12/06/2016" OR # find . -maxdepth 1 -newermt "12/06/16"
您可以在我们接下来的系列文章中获得有关ls
和命令的更多使用信息。find
- 通过这 15 个示例掌握 Linux ‘ls’ 命令
- 对 Linux 用户有用的 7 个古怪的 ls 技巧
- 通过这 35 个示例掌握 Linux 的“find”命令
- 在 Linux 中查找带扩展名的多个文件名的方法
在本文中,我们解释了如何使用 ls 和 find 命令仅列出今天的文件的两个重要技巧。请使用下面的反馈表向我们发送有关该主题的任何问题或评论。您也可以告知我们用于相同目的的任何命令。