ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux基础文件查找之find

2020-12-09 23:29:28  阅读:145  来源: 互联网

标签:jiangshen 文件 etc 查找 linux root find


1.find查找概述

1、为什么要有文件查找,因为很多时候我们可能会忘了某个文件所在的位置,此时就需要通过find来查找。
2、find命令可以根据不同的条件来进行查找文件,例如:文件名称、文件大小、文件修改时间、属主属组、权限、等等方式。同时find命
3、工作特性:查找速度略慢、精确查找、实时查找

find命令基本语法

命令路径选项表达式动作
find[path][optiong][expression][action]

2.find查找示例

2.1 find根据文件名查找

#1.查找/etc目录下包含ifcfg-ens33名称的文件
[root@jiangshen ~]# find /etc -name "ifcfg-ens33"

#2.-i 忽略大小写
[root@jiangshen ~]# find /etc -iname "ifcfg-ens33"
#查找/etc目录下包含ifcfg-eth名称所有文件
[root@jiangshen ~]# find /etc/ -name "ifcfg-ens*"
[root@jiangshen ~]# find /etc -iname "ifcfg-ens*"

2.2 根据权限查找

#精切匹配644权限
[root@jiangshen ~]# find . -perm 644 -ls
#包含444权限即可
[root@jiangshen ~]# find . -perm -444  -ls
#查找全局可写(每位权限必须包含w)
[root@jiangshen ~]# find . -perm -222 -ls
#包含set uid
[root@jiangshen ~]# find  /usr/sbin -perm -4000 -ls
#包含set gid
[root@jiangshen ~]# find  /usr/sbin -perm -2000 -ls
#包含sticky
[root@jiangshen ~]# find  /usr/sbin -perm -1000 -ls

说明:
mode:	精确权限匹配
/mode:	任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足9位权限之间存在"或关系"
-mode:	每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足9位权限之间存在"与关系"

2.3 根据文件从属关系查找

#查找属主是jack
[root@jiangshen ~]# find /home -user jack
#查找属组是admin
[root@jiangshen ~]# find /home -group admin
#查找属主是jack, 属组是admin
[root@jiangshen ~]# find /home -user jack -group admin
#查找属主是jack, 并且属组是admin
[root@jiangshen ~]# find /home -user jack -a -group admin
#查找属主是jack, 或者属组是admin
[root@jiangshen ~]# find /home -user jack -o -group admin
#查找没有属主
[root@jiangshen ~]# find /home -nouser
#查找没有属组
[root@jiangshen ~]# find /home -nogroup
#查找没有属主或属组
[root@jiangshen ~]# find /home -nouser -o -nogroup

2.4 根据文件的类型查找

# f 文件
[root@jiangshen ~]# find /dev -type f
# d 目录
[root@jiangshen ~]# find /dev -type d
# l 链接
[root@jiangshen ~]# find /dev -type l
# b 块设备
[root@jiangshen ~]# find /dev -type b
# c 字符设备
[root@jiangshen ~]# find /dev -type c
# s 套接字
[root@jiangshen ~]# find /dev -type s
# p 管道文件
[root@jiangshen ~]# find /dev -type p

2.5 根据文件的大小查找

#1.查找大于5M的文件
[root@jiangshen ~]# find /etc -size +5M

#2.查找等于5M的文件
[root@jiangshen ~]# find /etc -size 5M

#3.查找小于5M的文件
[root@jiangshen ~]# find /etc -size -5M

2.6 根据时间戳查找

#1.查找7天以前的文件(不会打印当天的文件)
[root@jiangshen ~]# find ./ -iname "file-*" -mtime +7

#2.查找最近7天的文件,不建议使用(会打印当天的文件)
[root@jiangshen ~]# find ./ -iname "file-*" -mtime -7

#3.查找第7天文件(不会打印当天的文件)
[root@jiangshen ~]# find ./ -iname "file-*" -mtime 7

#4.本地文件保留最近7天的备份文件, 备份服务器保留3个月的备份文件
find /backup/ -iname "*.bak" -mtime +7 -delete
find /backup/ -iname "*.bak" -mtime +90 -delete

3.组合测试

符号作用
-a
-o
-not!
#1.查找当前目录下,属主不是hdfs的所有文件
[root@jiangshen ~]# find . -not -user hdfs 
[root@jiangshen ~]# find . ! -user hdfs
    
#2.查找当前目录下,属主属于hdfs,且大小大于300字节的文件
[root@jiangshen ~]# find . -type f -a -user hdfs -a -size +300c
        
#3.查找当前目录下的属主为hdfs或者以xml结尾的普通文件
[root@jiangshen ~]# find . -type f -a \( -user hdfs -o -name '*.xml' \)

4.处理动作

动作含义
-print打印查找到的内容(默认)
-ls类似于对查找到的文件执行"ls -l"命令,输出文件的详细信息
-delete删除查找到的文件
-fls /PATH/TO/SOMEFILE把查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \ ;对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户进行确认
-exec COMMAND {} \ ;对查找的每个文件执行由COMMAND表示的命令
注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令但是有些命令不能接受过长的参数,此时命令执行会失败,另一种方式可规避此问题

4.1 find查找后的动作命令示例

#1.使用-print打印查找到的文件
[root@jiangshen ~]# find /etc -name "ifcfg*"
[root@jiangshen ~]# find /etc -name "ifcfg*" -print

#2.使用-ls打印查找到的文件,以长格式显示
[root@jiangshen ~]# find /etc -name "ifcfg*" -ls

#3.使用-delete删除文件,但仅能删除空目录
[root@jiangshen ~]# find /etc -name "ifcfg*" -delete

#4.使用-ok实现文件拷贝,但会提示是否拷贝
[root@jiangshen ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \;

#5.使用-exec实现文件拷贝和文件删除。
[root@jiangshen ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;
[root@jiangshen ~]# find /etc -name "ifcfg*" -exec rm -f {} \;

4.2 使用find命令结合xargs

#xargs将前者命令查找到的文件作为一个整体传递后者命令的输入
[root@jiangshen ~]# touch file.txt
[root@jiangshen ~]# find . -name "file.txt" |xargs rm -f
[root@jiangshen ~]# find . -name "file.txt" |xargs -I {} cp -rvf {} /var/tmp

标签:jiangshen,文件,etc,查找,linux,root,find
来源: https://blog.csdn.net/m0_50708207/article/details/110942651

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有