Linux的find命令

命令解释

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打印
原文地址:https://www.cnblogs.com/guge-94/p/10411419.html