如何在 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 . -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“查找”命令
- 在 Linux 中查找带有扩展名的多个文件名的方法
在本文中,我们解释了如何借助 ls 和 find 命令仅列出今天的文件的两个重要技巧。使用下面的反馈表向我们发送有关该主题的任何问题或评论。您也可以告知我们用于同一目标的任何命令。