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~