命令解释
find
-- 在目录层次结构中搜索文件
-- linux下参数最多,最为复杂的命令
命令语法
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
常见示例
基于目录深度的查找
find /etc/ -mindepth 1 -type f # 查找/etc目录后至少1个子目录深度的所有文件 find /etc/ -maxdepth 1 -type f # 查找/etc目录后至多1个子目录深度的所有文件 # 这招根据目录成熟设定范围很好用
基于文件系统的查找
find / -mount # 这招可以屏蔽其他分区的文件搜索
基于最后一次访问时间查找
find / -amin -60 # 最后一次访问时间在60分钟之内的文件或者目录 find / -atime -2 # 最后一次访问时间在24*2小时之内的文件或者目录 find / -mount -anewer /root/anaconda-ks.cfg # 最后一次访问时间最接近anaconda-ks.cfg文件的最后一次访问时间的文件
基于最后一次状态更改时间查找
find / -cmin -60 # 最后一次状态更改时间在60分钟之内的文件或者目录 find / -ctime -2 # 最后一次状态更改时间在24*2小时之内的文件或者目录 find / -mount -cnewer /root/anaconda-ks.cfg # 最后一次状态更改时间最接近anaconda-ks.cfg文件的最后一次访问时间的文件
基于最后一次内容修改时间查找
find / -mmin -60 # 最后一次内容修改时间在60分钟之内的文件或者目录 find / -mtime -2 # 最后一次内容修改时间在24*2小时之内的文件或者目录 find / -mount -newer /root/anaconda-ks.cfg # 最后一次内容修改时间最接近anaconda-ks.cfg文件的最后一次访问时间的文件
基于文件大小查找
find / -mount -empty # 空目录或者空文件查找 find / -size -512b # 查找根目录下面大小在512bit以内的文件或者目录 find / -size +1024c # 查找根目录下面大于1024字节的文件或者目录 find / -size 1024k # 查找根目录下面等于1024K的文件或者目录 find / -size +500M # 查找根目录下面大于500M的文件或者目录 find / -size +1G # 查找根目录下面等于1G的文件或者目录
基于权限大小查找
find / -executable # 查找根目录分区下面可执行的文件或者可搜索的目录 find / -gid 0 # 查找超级用户组所拥有的文件或者目录 find / -uid 0 # 查找超级用户所拥有的文件或者目录 find / -group root # 查找root用户组所拥有的文件或者目录 find / -nogroup root # 查找非root用户组所拥有的文件或者目录 find / -nouser root # 查找非root用户所拥有的文件或者目录 find / -perm 755 # 查找权限是755的文件或者目录 find / -perm 4755 # 查找权限属主中带有粘滞位的文件或者目录 find / -readable # 查找可读权限的文件或者目录 find / writable # 查找可写权限的文件或者目录
基于文件名称查找
find / -mount -name "file" # 查找根目录分区下面名叫'file'的文件或者目录 find / -mount -iname "file" # 查找根目录分区下面名叫'file'的文件或者目录,不区分大小写 find / -mount -path "*net*" # 查找根目录分区路劲中包含net的所有文件或者目录 find / -mount -ipath "*net*" # 查找根目录分区路劲中包含net的所有文件或者目录,不区分大小写
基于链接数查找
find / -mount -links 3 # 查找根目录分区下面链接文件数大于等于3的文件或者目录
基于inode值查找
find / -inum 101207402 # 查找根目录下面inum是101207402值的文件或者目录
对文件进行操作
find /tmp -type f -exec rm -rf {} ; # 对tmp下面的普通文件执行删除操作;调用系统的rm命令 find /tmp -type -delete # 对tmp下面的普通文件执行删除操作;
对匹配文件进行格式化输出
find /etc -type f -printf 'File: %T+ %p ' # 下次再研究了,printf很有用的一个参数
基于文件类型查找
find / -type f # 查找根目录下面的所有文件 b 块文件,如:磁盘文件 c 字符文件,如:驱动文件 d 目录文件 p 管道文件 f 普通文件 l 链接文件 s 套接文件 D 这个我也不知道是啥文件
查找3天内,被被更改过的文件;
find / -mount -ctime -3 -printf '%t %p ' %t表示ctime时间打印,%p代表匹配的内容,printf默认不支持换行,所以需要
以上部分均来自于find在线帮助文档,本人仅进行了翻译、收集、整理工作;有不对的地方请多多指点,另外建议各位同学不要跟我这种神经病一样,花一天的时间翻译一个man手册~~~
注意要点
- find支持'!'取反符号
- find默认支持通配符,不支持基础正则
- find尽量用printf进行格式输出,不要用ls打印