find命令查询指定时间的大文件并删除

Linux下find命令查询指定时间的大文件并删除

1.常规方法

1.1 语法:

使用find命令和rm命令结合使用删除指定时间的文件

--时间单位为天
find 查询路径  -ctime/-mtime/-atime 时间范围 -name 文件名称 -type f -exec rm {} \;
--时间单位为分钟
find 查询路径  -cmin/-mmin/-amin 时间范围 -name 文件名称 -type f -exec rm {} \;
1.2 示例:
--删除/home/testfile目录下修改时间大于2天,后缀为.dat的文件
find /home/testfile  -mtime +2 -name "*.dat" -type f -exec rm {} \;

特别说明:
如果文件名称使用模糊查询,则需要对文件名部分使用双引号,如上述示例,否则会出现如下错误信息:

find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]
1.3 知识拓展- 关于时间:

Linux为我们提供了一个简便的查询方式,那就是 +n 和 -n。下面以 -mtime 举例说明:
  -mtime n : n为数字,意思为在n天之前的“一天之内”被更改过内容的文件
  -mtime +n : 列出在n天之前(不含n天本身)被更改过内容的文件名
  -mtime -n : 列出在n天之内(含n天本身)被更改过内容的文件名
找 “5天之内被更改过的文件” 就是 find / -mtime -5 ,找“5天前的那一天被更改过的文件” 就是 find / -mtime 5 ,找“5天之前被更改过的文件” 就是 find / -mtime +5。接下来用图示说明:
在这里插入图片描述
由这个时光轴我们可以知道,最右边为当前时,+5 代表大于等于 6 天前的文件, -5 代表小于等于 5 天内的文件,5 则是代表 5-6 那一天的文件。

关于find命令使用时间筛选文件说明,可以参考如下博客:
Linux常用命令之 查找命令 find —— 细说 -atime,-mtime,-ctime - isqiao - 博客园

2.非常规方法

当需要删除的单个文件比较小时,可以使用第一节的常规方法删除文件。
当需要删除的单个文件比较大时,使用rm命令删除后可能会出现磁盘空间不释放的情况。此时的处理思路如下:

第一步:查找需要删除的大文件并将内容清空

没有使用find命令时,可以使用如下方法清空文件内容(此处以test.txt为例)

echo ''> test.txt
cat /dev/null > test.txt

> test.txt
cp /dev/null test.txt
dd if=/dev/null of=test.txt
truncate -s 0 test.txt

如果需要和find命令结合,则无法使用echo命令,但是可以使用truncate命令,如下示例查询/home/testfile目录下修改时间大于2天,后缀为dat的文件,并将其内容清空:

find /home/testfile  -mtime +2 -name "*.dat" -type f -exec truncate -s 0 {} \;

【关于truncate命令】
truncate 可被用来将一个文件缩小或者扩展到某个给定的大小。你可以利用它和 -s 参数来特别指定文件的大小。要清空文件的内容,则将文件的大小设定为 0即可

关于快速删除大文件的方法可以参考如下博客:
Linux 下清空或删除大文件/大量文件的几种方法_运维_sd4493091的博客-CSDN博客

第二步:删除文件大小为0的文件

文件内容清空后,将其删除

find /home/testfile -name "*.dat" -type f -size 0 -exec rm {} \;

特别说明:

  1. 此处不能再使用与第一步相同的时间范围框定,因为truncate操作后的文件的mtime时间已经发生变化
  2. 若相同路径下已经存在大小为0、相同后缀但不能被删除的文件不适用此方法
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值