IT技术分享

分享技术文章

如何在 Linux 中查找和删除早于N天和N小时的文件?

可以通过在 find 命令中使用以下选项来实现。

  • atime – 上次访问文件(或目录)数据的时间

  • mtime – 上次修改文件(或目录)数据的时间

  • mmin – 文件数据的最后修改时间少于、多于或恰好是 n 分钟前。

  • amin – 上次访问文件的时间少于、多于或恰好是 n 分钟前。

什么是查找命令?

find 是一个强大的命令行实用程序,它搜索文件系统的一个或多个目录树,根据条件定位文件。我们可以在 find 命令中传递多个参数来实现许多要求。

1、根据文件修改时间(mtime)搜索和删除文件

# find /home/test -type f -mtime +30 -print

根据搜索结果可进一步删除操作

# find /home/test -type f -mtime +30 -delete;
或者
# find /home/test -type f -mtime +30 -exec rm -f {} \;
或者
# find /home/test -type f -mtime +30 | xargs rm -f

参数:

  • find: find 是一个命令

  • /home/sudha: 文件路径(它应该被你的替换)

  • -type f: 什么类型的文件

  • -mtime +30: 它过滤 30 天前的文件。

  • -exec rm -f 执行文件删除操作

  • {}: 表示通过 Find 命令找到的文件。

  • \; 它将结束命令。

2、根据扩展名查找并打印早于 1 天的文件。此输出将帮助我们在执行删除之前确认这些文件。

# find /home/test -type f -name "*.jpeg" -mtime +1 -print

确认后,执行以下完整命令删除:

# find /home/test -type f -name "*.jpeg" -atime +10 -delete;
或者
# find /home/test-type f -name "*.jpeg" -atime +10 -exec rm -f {} \;
或者
# find /home/test -type f -name "*.jpeg" -atime +10 | xargs rm -f

3、根据文件修改的时间进行查找并删除。

根据文件修改分钟 (mmin) 进行查找并打印输出超过 40 分钟的文件。


# find /home/test -type f -mmin -40 -print

确认后,执行以下完整命令删除:

# find /home/test -type f -mmin -40 -delete;
或者
# find /home/test -type f -mmin -40 -exec rm -f {} \;
或者
# find /home/test -type f -mmin -40 | xargs rm -f

4、根据扩展名查找修改时间超过5个小时的文件打印输出,并删除。

# find /home/test -type f -name "*.txt" -mmin -300 -print

确认后,执行以下完整命令删除:

# find /home/test -type f -name "*.txt" -mmin -300 -delete;
或者
# find /home/test -type f -name "*.txt" -mmin -300 -exec rm -f {} \;
或者
# find /home/test -type f -name "*.txt" -mmin -300 | xargs rm -f

点赞