find在linux中使用很多很频繁今天我们一起来学习一下find的各种使用
1 find的名称查找文件
(1)可输入全名查找
[root@db04 /etc]# find ./ -name passwd
./passwd
./pam.d/passwd
(2)如果你只是对文件只有模糊的印象可根据 “pass*”查找
[root@db04 /etc]# find ./ -name "pass*"
./openldap/certs/password
./selinux/targeted/active/modules/100/passenger
./passwd
2 find大小的查找
(1) 查找大于5M的文件
[root@db04 /etc]# find ./ -size +5M
./udev/hwdb.bin
(2)查找小于5M的文件
[root@db04 /etc]# find ./ -size -5M
(3)可以把查出来的结果用管道符给展示出来
[root@db04 /etc]# find ./ -size -5M |xargs ls -lh
find按类型查找
f 文件
d 目录
l 链接
p 管道文件
s socket文件
c 字符设备
b 块设备
(1)查找文件
[root@db04 /etc]# find ./ -type f -iname "pass*"
(2)查找目录
[root@db04 /etc]# find ./ -type d -iname "pass*"
(3)查找链接文件
[root@db04 /etc]# find ./ -type l -iname "*b*"
(4)查找块设备
[root@db04 /etc]# find /dev/ -type b
(5)查找字符设备
[root@db04 /etc]# find /dev/ -type c -ls
find以时间查找
(1)查找当前时间以前的文件
[root@db04 /etc]# find ./ -type f -mtime +7
(2)查找当前时间以后的文件然后删除
[root@db04 /etc]# find ./ -type f -mtime -7 -delete
find用户查找
(1)查找属主是什么的
[root@db04 /etc]# find ./ -type d -user www -ls
find /home/ -maxdepth 1 -type d -user jack
(2)查找属组是什么的
find /home/ -maxdepth 1 -type d -group hr -ls
[root@db04 /etc]# find ./ -type d -group root -ls
find /home/ -maxdepth 1 -type d -user jack -group hr -ls
find /home/ -maxdepth 1 -type d -user jack -o -group hr|xargs ls -ld
(3)查找home目录下,类型是目录没有属主的
[root@www.oldboyedu.com ~]# find /home/ -maxdepth 1 -type d -nouser -ls
(4)查找home目录下,类型是目录没有属组的
[root@www.oldboyedu.com ~]# find /home/ -maxdepth 1 -type d -nogroup -ls
find权限查找
(1)精确查找文件权限
[root@db04 /etc]# find ./ -type f -perm 644
(2)#包含444权限即可 -444
[root@www.oldboyedu.com ~]# find ./ -type f -name "file*" -perm -444
Action动作:
-delte,只能删除文件,如果要删除目录,需要保证目录为空,否则无法删除
[root@www.oldboyedu.com ~]# find ./log/ -type f -name "*.log" -delete
-ok,可以执行任何自定义命令,但是会提示是否确认.
[root@www.oldboyedu.com ~]# find /etc/ -name "ifcfg*" -ok cp -vp {} /tmp \;
-exec
[root@www.oldboyedu.com ~]# find /etc/ -name "ifcfg*" -exec cp -vp {} /tmp \;
[root@www.oldboyedu.com ~]# find log/ -type d -exec cp -rpv {} /tmp \;
[root@www.oldboyedu.com ~]# find test/ -type f -exec rm -f {} \;
#xargs将前者命令查找到的文件作为一个整体传递后者命令的输入
[root@xuliangwei ~]# touch file.txt
[root@xuliangwei ~]# find . -name "file.txt" |xargs rm -f
[root@www.oldboyedu.com ~]# find . -name "file.txt" |xargs -I {} cp -rvf {} /tmp