网站搜索

如何在 Linux 中查找最近或今天修改的文件


在本文中,我们将解释两个简单的命令行提示,使您能够仅列出今天的所有文件。

Linux 用户在命令行中遇到的常见问题之一是查找具有特定名称的文件,当您真正知道文件名时,它会容易得多。

但是,假设您忘记了当天早些时候创建的文件的名称(在包含数百个文件的 home 文件夹中),但您需要紧急使用。

以下是仅列出您今天创建或修改(直接或间接)的所有文件的不同方法。

1. 使用 ls 命令,您只能列出主文件夹中今天的文件,如下所示:

  1. -a – 列出所有文件,包括隐藏文件
  2. -l – 启用长列表格式
  3. --time-style=FORMAT – 以指定的格式显示时间
  4. +%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 更灵活,并且提供了很多选项,其目的如下。

  1. -maxdepth level 用于指定将执行搜索操作的起始点(本例中为当前目录)以下的级别(以子目录为单位)。
  2. -newerXY,如果相关文件的时间戳 X 比文件引用的时间戳 Y 新,则此方法有效。 X 和 Y 代表以下任意字母:

    1. a – 文件引用的访问时间
    2. B – 文件引用的诞生时间
    3. c – inode状态改变参考时间
    4. m – 文件引用的修改时间
    5. 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"

您可以在我们的以下系列文章中获取 lsfind 命令的更多使用信息。

  1. 通过这 15 个示例掌握 Linux 'ls' 命令
  2. 对 Linux 用户有用的 7 个古怪的“ls”技巧
  3. 通过这 35 个示例掌握 Linux“查找”命令
  4. 在 Linux 中查找带有扩展名的多个文件名的方法

在本文中,我们解释了如何借助 ls 和 find 命令仅列出今天的文件的两个重要技巧。使用下面的反馈表向我们发送有关该主题的任何问题或评论。您也可以告知我们用于同一目标的任何命令。