重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
find:文件查找
10年积累的成都网站设计、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先制作网站后付款的网站建设流程,更有丹徒免费网站建设让你可以放心的选择与我们合作。
作用:实时查找工具,通过遍历指定路径完成问件查找,递归地在层次目录中处理文件
find的特点:
1.精确查找,实时查找
2.可能只搜索用户具备读取和执行权限的目录
3.查找速度略慢
find(什么也不要跟就会把当前目录的所有列表全部显示出来,find默认是递归搜索的)
语法:
find [OPTION]... [查找路径] [查找条件] [处理动作]
查找路径:指定具体目标路径;默认为当前目录
查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
处理动作:对符合条件的文件做操作,默认输出至屏幕
选项:
搜索目录层级
-maxdepth level :最大搜索目录深度
-mindepth level :最小搜索目录深度
例: find 目录 -maxdepth 2 -mindepth 2:只搜索2级目录
-depth:find 目录 -depth:先处理文件后处理目录
根据文件名和inode查找:
-name "文件名称":支持使用glob
*, ?, [], [^]
-iname "文件名称":不区分字母大小写
-inum n 按inode号查找
例:
[root@localhost data]$find /data -inum 67
/data/123.txt
-samefile name 相同inode号的文件
例:
find /data -samefile /data/fi.sh:查看节点编号相同的文件前后目录可以不一致
搜索的目录 标准文件所在的目录
-links n 链接数为n的文件
-regex “PATTERN”:以PATTERN匹配整个文件路径,而非文件名称(匹配的是完整路径)
根据文件属主和属组查找;
-user username:查找属主为指定用户的文件
-group groupname:查找属组为指定组的文件
-uid useruid:查找属主为指定UID的文件
-gid groupgid:查找属组为指定GID的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
根据文件类型查找:
-type:
b 特殊块文件(缓冲的)
c 特殊字符文件(不缓冲)
d 目录
p 命名管道 (FIFO)
f 普通文件
l 符号链接
s 套接字
空文件或目录
-empty
-type d -empty
根据文件大小:
-size:常用单位(K M G c(Byte))
+#M:表示大于#M的文件,+5M
-#M:表示小于于#M的文件,-5M
根据时间查找:
以天为单位:
-atime:访问时间
+,-:+10,超过十天访问过的文件,-10十天内访问过的文件
-mtime:修改时间,文件内容最后一次修改的时间,文件内容修改
-ctime:改变时间,文件最后一个改变的时间,属性及文件名改变
以分钟为单位:
-amin:访问时间
-mmin:修改时间
-cmin:改变时间
根据文件权限查找:
-perm:
mode:精确查找
/mode:任何一类(u,g,o)对象的权限只要匹配一位就满足条件。或的关系。早期用+号表示
-mode:每一类对象都必须拥有指定权限才满足条件
0:表示不关注
例:find -perm 755 file,精确匹配权限755的文件
find -perm /222 file,属主,属组,其他人,其中一个有写权限就匹配
find -perm -222 file,属主,属组,其他人,必须每个都有写权限就匹配
find -perm -002 file ,只有其他人有写权限时才匹配
动作:
-print:默认的处理动作,将匹配到的显示到屏幕
-ls:类似于ls -l查看文件
-delete:匹配到的内容删除(危险,不要用)
-fls file:查找到的文件以长格式信息保存到指定的文件中
-ok command {} \; :对查找到的文件,执行由command位指定的命令,缺点是对每个匹配的文件执行命令前都需要确认
例:find /data -name "*.sh" -ok mv {} /tmp \;
{}:引用前面find匹配到的文件,引用查找到的文件名称自身,例如匹配的是ping.sh,name{}内就位{ping.sh}
\;:语法格式,必须以\;结尾
-exec command {} \; :对查找到的文件,执行由command位指定的命令,和ok不同的是不需要一个一个确认
例:find /data -name "*.sh" -ok mv {}.bak /tmp \;
{}.bak:移动到/tmp目录下改名为以.bak为后缀的文件
查找/var/目录下不属于root、lp、gdm的所有文件
[root@centos7 ~]#find /var ! -user root ! -user lp ! -user gdm -type f
/var/lib/colord/mapping.db
/var/lib/colord/storage.db
/var/lib/nfs/state
/var/lib/unbound/root.key
/var/lib/setroubleshoot/setroubleshoot_database.xml
/var/lib/setroubleshoot/email_alert_recipients
/var/lib/postfix/master.lock
/var/spool/mail/rpc
/var/spool/mail/cheng
/var/spool/mail/ning