本文共 3741 字,大约阅读时间需要 12 分钟。
命令选项
组合条件处理动作实例1,按名称查找2,按类型查找3,按用户名,组名,uid,gid查找4,按权限查找5,按大小查找6,按时间查找find 查找命令
命令格式
find 查找路径 [选项] 查找内容或find [OPTION]... [查找路径] [查找条件] [处理动作]
命令选项
-name --按名字查找 -i 忽略字母大小写支持使用glob(通配符) *, ?, [], [^]
-teyp --按文件类型查找
b:块设备文档d:目录c:字符设备文档P:管道文档l:符号链接文档f:普通文档-size --通过文件大小查找
+n 查找出大于n的文件-n 查找出小于n的文件-uid 按uid查找
-gid 按gid查找-user 按用户名查找-nouser 查找没有属主的文件-group 按属组名查找-nogroup 查找没有属组的文件-perm 通过权限查找
组合条件
与:-a或:-o非:-not, !例:!A -a !B = !(A -o B)!A -o !B = !(A -a B)找出/tmp目录下,属主不是root,且文件名不是fstab的文件;
find /tmp ( -not -user root -a -not -name 'fstab' ) -lsfind /tmp -not ( -user root -o -name 'fstab' ) -ls处理动作
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令; —— {}: 用于引用查找到的文件名称自身;-print:默认的处理动作,显示至屏幕;-ls:类似于对查找到的文件执行“ls -l”命令;-delete:删除查找到的文件;-fls /path/to/somefile:查找到的所有文件的长格式信息保存至指定文件中;-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令;对于每个文件执行命令之前,都会交互式要求用户确认;注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令;
有些命令不能接受过多参数,此时命令执行可能会失败;另一种方式可规避此问题:find 查找路径 [选项] 查找内容 | xargs COMMAND实例
1,按名称查找
find /etc/ -name grub.conf --查找/etc目录下的grub.conf文件find /etc/ -name "*.conf" --使用通配符,查找/etc/目录下的以.conf结尾的文件,这里一定加上引号,否则会出现问题find /etc/ -name ".*" --查找etc下所有隐藏文件find /test/ -iname Aaa --忽略大小写加上-i通配符(不是正则表达式):? --匹配单个任意字符* --0个或多个任意字符[a-z] --匹配单个字母[0-9] --匹配单个数字
--定义查找的目录层次
/test/aaa# find /test/ -maxdepth 2 -name aaa/test/aaa/test/a/aaa
2,按类型查找
find /etc -type l |grep grub.conffind /etc -type l -name grub.conf --与-name参数一起写find / -type f --普通文件find / -type b --块文件find / -type s --socket文件find / -type c --字符文件find / -type p --管道文件find / -type d --目录find / -type l --链接文件
3,按用户名,组名,uid,gid查找
find / -user a find / -group a find / -uid 533 find / -gid 533 find / -nouser --查出系统的无头文件,就是指没有属主的文件 find / -nogroup --查出系统的没有属组的文件没有属主和属组的文件,系统管理一般是要去注意的
4,按权限查找
find / -perm 777 --查出所有权限为777的文件,一般也是管理员要注意的
练习:
total 0-rwxr-xrwx. 1 root root 0 Jul 23 11:42 1---------x. 1 root root 0 Jul 23 11:42 10-rwx--xr--. 1 root root 0 Jul 23 11:42 2-rw-rw--wx. 1 root root 0 Jul 23 11:42 3-r-xrwx---. 1 root root 0 Jul 23 11:42 4-r---w--w-. 1 root root 0 Jul 23 11:42 5--wx-wx-wx. 1 root root 0 Jul 23 11:42 6--w-r-x--x. 1 root root 0 Jul 23 11:42 7---xrw-r-x. 1 root root 0 Jul 23 11:42 8----rwxr--. 1 root root 0 Jul 23 11:42 9# find . -perm +422 --只有7和10两个文件不符合。+号的意思表示把权限写成9位,然后位与位对比,只要有一位重合,则找出来# find . -perm -422 --只查出3和5两个文件。-号的意思表示位与位对比,要全部包含重合,则找出来例:假设/etc/目录下所有文件owner和group为root.root,我要查找一个普通用户user1在/etc/下能读能写的文件.find /etc/ -perm -006
5,按大小查找
find / -size +500M --单位有k,m,g等find / -size +1Gfind /etc -size +50kfind /etc -size +50b (b在这里不是代表byte,是代表block,并且还不是系统的4096大小的block,这里的大小为512byte)find / -size -1Mfind / -size +3c (c在这里代表byte)vimnfind / -size +80M -size -100M
6,按时间查找
# stat 1 |tail -3 Access: 2014-07-23 11:56:42.297572398 +0800 --atime 阅读过,用cat,tail,head,more,less命令等或者vi访问过,但没有修改;执行过也会改变Modify: 2014-07-23 11:56:44.836572907 +0800 --mtime 修改过内容,用vi修改过或者echo一个值重定向Change: 2014-07-23 11:56:44.856885177 +0800 --ctime 改变过内容,属主,属组,权限,创建软链接,硬链接等-mtime n --代表n天前的24小时内 +n --代表n天前(不包含n天本身的24小时) -n --代表n天内 1 2 3 4 5 6 7 |-- 2 --| <------- -2 | | +2 --------------->find / -mtime 0 --0代表目前当天的24小时find / -mtime +1 --修改时间48小时之前find . -mtime -1 --修改时间往推24小时到现在甚至到将来find / -mtime 1 --往前推24小时到推48小时之内 -mmin -amin --与mtime,atime,ctime的单位不同,这是以分钟为单位 -cmin # find / -mmin +30 -mmin -150 --查看30分钟前到150分钟前之内的两个小时内有哪些文件被修改过内容现在的时间为2014年7月23号14:35分,我现在想查出7月20号那一天哪些文件被修改过内容怎么做?find / -mtime 3 --这样做代表的是7月19号14:35分到7月20号14:35分
转载于:https://blog.51cto.com/13744837/2115470