find参数说明:

find有很多参数是以动作首字母+时间的方式用于按访问、改变、更新时间来筛选文件。

动作表达:

  • a(last accessed) 最近一次访问时间

  • c(last changed) 最近一次改变时间

  • m(last modified) 最近一次修改时间

注意此上的c和m的区别,c是change,包括文件的权限、文件名的更改都算,但是m,只有文件的本身的内容更改才算修改。

时间单位的表达:

-min(minutes) 分钟

-time 小时

-newer 文件最近一次操作(操作类型取决于前面的字母)晚于文件的修改时间

例子:

find /home -atime +10 -name "*.*"

#查找home目录下10天内未访问的文件

这里的-name 参数匹配文件名,*.*表示匹配所有文件,atime的值+10,表示10天之前,若是-10表示10天之内,10(没有加减号)表示10天。

执行删除命令

上述操作用于查找文件,查到目标文件后删除

-exec参数,如果查找有返回,可在exec参数后加上需要操作的命令,查找结果用{}来代替

查找10天内未被修改的文件并删除命令:

find . -ctime +30 -name "." -exec rm -Rf {} ;

建立脚本

在home目录下建立文件夹cshell,建立文件rm-old.sh

$mkdir ~/cshell

$vi ~/cshell/rm-old.sh

脚本内容:

#!/bin/bash

find . -atime +30 -name "." -exec rm -Rf {} ;

echo "current floder is :";

pwd;

echo "file is deleted."

存入环境变量,打开文件~/.bashrc,在最后一行添加:

export PATH=${PATH}:$HOME/cshell

使环境变量修改生效:

$source ~/.bashrc

在想删除旧文件的地方执行即可:

$rm-old.sh

更多find命令使用举例

1.查找没有777权限的文件

find . -type f ! -perm 777

2.查找只读文件

find . -perm /u=r

3.查找空目录

find . -type d -empty    

4.查找某用户的文件

find . -user cgz

END~