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

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

Linux用户在命令行上遇到的常见问题之一是查找具有特定名称的文件,当您实际知道文件名时,这可能会更容易。

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

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

1. 使用ls命令,您可以按如下方式仅列出今天在您的home文件夹中的文件,其中:

  1. -a – 列出所有文件,包括隐藏文件
  2. -l – 启用长格式列表
  3. --time-style=FORMAT – 以指定的FORMAT显示时间
  4. +%D – 以%m/%d/%y格式显示/使用日期
# ls  -al --time-style=+%D | grep 'date +%D'
Find Recent Files in Linux

此外,您可以通过包含-X标志来按字母顺序对结果列表进行排序

# ls -alX --time-style=+%D | grep 'date +%D'

您还可以使用-S标志根据大小(从大到小)列出:

# ls -alS --time-style=+%D | grep 'date +%D'

2.同样,可以使用find命令,它实际上比ls更灵活,并提供了许多选项,用于相同的目的,如下所示。

  1. -maxdepth级别用于指定搜索操作将在起始点(当前目录在这种情况下)下进行的级别(以子目录为单位)。
  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 Today’s Files in Linux

重要:在上述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"
Find Todays Modified Files in Linux

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

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

在本文中,我们解释了如何使用ls和find命令列出仅今天的文件的两个重要提示。请利用下面的反馈表格向我们发送关于该主题的任何问题或评论。您还可以告诉我们用于达到相同目标的任何命令。

Source:
https://www.tecmint.com/find-recent-modified-files-in-linux/