在工作中不可或缺的工具find:查找系统中的各种文件,对查找的文件进行操作,这就是find的作用。进入正题:
1、查找下系统中有一下系统中有几个文件叫issue的
[root@localhost private]#find / -name issue
/etc/issue
/root/etc2017-02-28/issue
注:find查找是精确查找,不是模糊匹配
2、现在有一个任务,需要备份一下/etc目录下的文件,只备份/etc目录当级目录下的文件
[root@localhost private]#find /etc -maxdepth 1 -mindepth 1
/etc/fstab
/etc/crypttab
/etc/mtab
/etc/resolv.conf
……..
命令中-maxdepth是最大目录递归,面mindepth是最小目录递归,而上面打示例是精确定位目录递归次数
3、下面来说说与文件类型的相关搜索
先来回忆一下文件都有那些类型吧:
file(f):普通文件
directory(d):目录
character(c):字符型设备文件
block(b):块类型设备文件
link(l):软链接文件
socket(s):套接字文件
pipe(p):管道文件
来查看一下/etc目录一级目录中的以.conf字符结尾的普通文件
find /etc -maxdepth 1 -mindepth 1 -type f -name “*.conf”
/etc/resolv.conf
/etc/sos.conf
/etc/logrotate.conf
/etc/host.conf
/etc/request-key.conf
做个小解释吧:精确定位目录层级使用 -maxdepth 1 -mindepth 1,而定位文件时使用-type再加上文件类型,而在文件名通配方面需要加引号
4、来说说相关时间的查找吧
查找一下最近7天发生变划的文件吧
find ./ -mtime -7
这个有mtime,atime,ctime之分,可还记的时间戳,就是它,所心查找对应的时间发生的不同的改变的文件就这么查吧
5、按文件大小进行查找
这个文件大小查找有点坑,在这个值区间太坑了不好玩
查找当前目录大于1M的目录
find ./ -size +1M -exec ls -lh {} \;
-rw-r–r–. 1 root root 1.8M Mar 4 15:04 ./.cache/tracker/meta.db
-rw-r–r–. 1 root root 1.2M Mar 4 15:04 ./.cache/tracker/meta.db-wal
在生产环境也只有这个比较常用,查看下特定目录下有那些大文件,所面的操作后面会说明
6、下面来看看权限相关的查询
查询一下文件的其它用户有执行权限的文件
find ./ -perm -001 -ls
查询当前目录有执行权限的文件
find ./ -perm /111 -ls
注:权限匹配中-mode是并的关系,在这之中0表示不关心这一个位置,例如-111就是属主,属组,其它用户都有执行权限的文件,而/mode正好相反,是或的关系,只要有一个位置匹配上就可以输出
7、下面说说操作匹配项
这里说个3+1吧:
-ls:这算是3个中的一个输出list长格式
-ok:这算是3个中的一个后面可以加命令进行操作
固定格式是:-ok COMMAND {} \;
-exec:这个同ok,只是进行操作时不提示
这里说一个示例吧,要把当前目录下的可执行文件移动到tmp目录下
find ./ -type f -perm /111 -exec mv {} /tmp/test/{} \;
来说说最后的1吧xarges,这个比较给力,可以完成大批量文件操作
find a | xargs rm
8、说一下用户相关的问题吧:
-user,-group,-gid,-uid,-nouser,-nogroup,
这个是查找用户的相关的参数,其中重要的就是查找没有用户,没有用户组的两个相关的参数了,这个可以强化设备安全,因为没有用户的文件,会照成设备安全隐患
9、上面介绍了这么多find的参数,但是这样的find并不强大,但是find支持或与并,这个就强大了,可以多条件进行匹配了
非:-not
与:-a
或:-o
查找var目录下的用户是root,用户组是mail的文件
find ./ -user root -a -group mail
注:-a可省略
写法多,正在挖掘
原创文章,作者:gaomei,如若转载,请注明出处:http://www.178linux.com/70561