Linux文件搜索工具find

一般格式:find [options] [查找路径] [查找条件] [处理动作]

               [options]:一般不加

               [查找条件]:

                       -name filename,按文件名查找,支持通配符

                       -iname filename,按文件名查找,不区分大小写

                       -user username: 根据属主查找

                       -group groupname: 根据属组查找

                       -nouser:查找没有属主的文件;

                       -nogroup: 查找没有属组的文件;

                       -type: 根据文件类型查找

                       -size: 根据文件大小查找

                       -atime:根据文件访问时间

                       -mtime:根据文件修改时间

                       -perm:根据文件权限

                       多条件可组合使用

                           -a: 与,同时满足

                           -o: 或,

                           -not, !:非,取反

               [处理动作]:

                       1,-exec COMMAND {} \;  对查找到的文件执行指定的命令

                          -exec  \;            是固定的格式后面那个分号必须有

                          {}                 表示由find找到的内容

                          COMMAND              表示你要对找到的内容执行的命令

                       2,“|”管道和xargs一起用

                           因为管道传递的是字符串,因此在find查找的文件

                           后用管道去处理这些文件是不会成功的

例如:

# find /etc/ -name passwd |ls -l

wKioL1MNgN3ztP7wAAAkwqiR-pk483.png

这个命令只表示去找/etc/下名为passwd的文件;然后

在当前目录执行一次ls -l命令

因此如果想要用ls -l去查看find找到的文件可以这样写

# find /etc/ -name passwd |xargs ls -l


wKiom1MNgR_QBWHPAAAVNvKE4Y0133.png

当然用上面的-exec \;也可以实现这样的功能,但是

xargs有它的优点,就是会把上面传递下来的参数一点

一点的传递给后面的命令。因此当你找到很多的小文件

并试图删除的时候rm命令一次接收不了那么多的文件

就可以用xargs命令了。关于xargs的更多用法可以看man

和google


一般用法:  

1,查找查找/etc/下文件名为passwd的文件


# find /etc/ -name passwd


wKiom1MNgTyAfQtfAAANT82J_SA485.png


 2,查找/etc/下文件名包含passwd的文件


# find /etc/ -name *passwd*


wKioL1MNgSbw9kBUAAAYlAy1YeY301.png


 3,查找/tmp/下root用户的文件并用ls -l显示出来


# find /tmp/ -user root -exec ls -l \;


wKioL1MNgTigTE_bAAAbngH9FlQ293.png

 4, 查找当前系统上不属于任何用户的文件


# find / -nouser -exec ls -l {} \;


wKioL1MNgUzhfBLiAAAj6IymHG0659.png


 5,查找/boot/目录下大于5M的文件


# find /boot/ -size +5M |xargs ls -hl


wKiom1MNgYGimvbKAAASM8osi3c188.png


这里的+5M表示大于5M,5M表示4M到5M之间

-5M就表示小于4M


# find ./ -size 5M -exec ls -lh {} \;


wKioL1MNgXXC-mX2AAAOImX53w0968.png


 6,查找/bin/目录下带有特殊权限的文件,即suid,sgid,sbit


# find /bin/ -perm +7000 |xargs ls -l


wKioL1MNgYiAi0naAAAinp9SSPc952.png


这里的+表示任何一类用户的任何一位权限匹配都行

-表示每类用户的指定要检查的权限位都匹配不写+或—

表示精确匹配。


 7,查找/boot/目录下的软链接文件


# find /boot/ -type l |xargs ls -l


wKiom1MNgb6CJJPVAAAPN-5fJo4209.png


f: 普通文件

d: 目录

b: 块设备

c: 字符设备

l: 符号链接文件

p: 命名管道

s: 套接字

 8,查找/etc/目录下最近4天修改过的文件


# find /etc/ -mtime -4 |xargs stat


wKioL1MNgamAwuf6AAAvpdhTnmQ237.png


文件很多我就不完全截图了

-4表示4天以内,+4表示五天以前

4表示4天到5天之间

还可以使用amin,mmin,cmin来表示分钟


 9,关于组合条件查找

 查找/sbin/目录下既有特殊权限又在5天累修改过的文件


# find /sbin/ -perm +7000 -mtime -5|xargs stat


wKiom1MNgd3zJ9XKAAAxrumjpro681.png

 -a表示“与”可省略,-o表示“或”不可省

 -not表示“非”

可能有的地方写的不对,希望大家多多指点。。。