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

这个命令只表示去找/etc/下名为passwd的文件;然后
在当前目录执行一次ls -l命令
因此如果想要用ls -l去查看find找到的文件可以这样写
# find /etc/ -name passwd |xargs ls -l
当然用上面的-exec \;也可以实现这样的功能,但是
xargs有它的优点,就是会把上面传递下来的参数一点
一点的传递给后面的命令。因此当你找到很多的小文件
并试图删除的时候rm命令一次接收不了那么多的文件
就可以用xargs命令了。关于xargs的更多用法可以看man
和google
一般用法:
1,查找查找/etc/下文件名为passwd的文件
# find /etc/ -name passwd
2,查找/etc/下文件名包含passwd的文件
# find /etc/ -name *passwd*
3,查找/tmp/下root用户的文件并用ls -l显示出来
# find /tmp/ -user root -exec ls -l \;
4, 查找当前系统上不属于任何用户的文件
# find / -nouser -exec ls -l {} \;
5,查找/boot/目录下大于5M的文件
# find /boot/ -size +5M |xargs ls -hl
这里的+5M表示大于5M,5M表示4M到5M之间
-5M就表示小于4M
# find ./ -size 5M -exec ls -lh {} \;
6,查找/bin/目录下带有特殊权限的文件,即suid,sgid,sbit
# find /bin/ -perm +7000 |xargs ls -l
这里的+表示任何一类用户的任何一位权限匹配都行
-表示每类用户的指定要检查的权限位都匹配不写+或—
表示精确匹配。
7,查找/boot/目录下的软链接文件
# find /boot/ -type l |xargs ls -l
f: 普通文件
d: 目录
b: 块设备
c: 字符设备
l: 符号链接文件
p: 命名管道
s: 套接字
8,查找/etc/目录下最近4天修改过的文件
# find /etc/ -mtime -4 |xargs stat
文件很多我就不完全截图了
-4表示4天以内,+4表示五天以前
4表示4天到5天之间
还可以使用amin,mmin,cmin来表示分钟
9,关于组合条件查找
查找/sbin/目录下既有特殊权限又在5天累修改过的文件
# find /sbin/ -perm +7000 -mtime -5|xargs stat
-a表示“与”可省略,-o表示“或”不可省
-not表示“非”
可能有的地方写的不对,希望大家多多指点。。。