• day 17 find命令详解


    find 的基本概述

    可以根据文件的名称、文件大小、文件的修改时间、文件的类型、
    文件的权限、文件的属主属组、文件的目录层级进行查找 
    
    Find的语法:
    命令		路径       选项       表达式       动作  
    查找		地区       妹子	      18-25       约
    

    find中特殊符号说明:

            .               # 在find中没有特殊意思就是自己本身符号.
    
    	*		# 所有
    
    	?		# 匹配任意一个字符  只能匹配一个 
    	
    	[]		# 匹配中括号中的任意一个字符 
    	
    	[^]		# 排除中括号中的字符
    

    linux常用通配符详细链接

    一,name根据文件名称查找

    选项:
    	-name		# 根据名称查找 
    	-i		# 忽略大小写    -iname
    

    实例:

    [root@localhost ~]# find ./ -name 1.txt  # 根据文件名在当前目录下查找1.txt
    

    二,type根据文件类型查找

    选项:
    
    	  -type		# 根据类型进行查找 
    	
    		f		# 普通文件  
    		
    		d		# 目录
    		
    		l		# 软链接
    		 
    		s		# 套接字 socket文件
    		
    		p		# 管道文件
    		
    		b		# 块设备  硬盘 硬盘分区  镜像光盘
    		
    		c		# 字符设备 
    		
    #  查找所有的普通文件,包括隐藏文件,也包括自己本身 
    

    实例:

    #  查找当前目录下类型为普通文件的文件(包括隐藏文件也查找出来)
    [root@localhost ~]# find ./ -type f 
    ./file8
    ./.bash_logou
    

    三,size根据文件的大小查找

    选项:
    
    	-size		# 根据文件大小查找 
    	
    	+n		# 大于
    	
    	-n		# 小于
    	
    	 n		# 精确匹配 
    	
    	c b  k  M  G		#  单位 
    #  按文件大小查找的时候 会进位匹配 比如按m查找的时候不足一兆的也算1兆
    #  像1.1兆也算两兆 或者3.1算4兆 依次类推
    

    实例:

    #  匹配小于1k的文件
    [root@localhost ~]# find ./ -type f -size -1k 
    ./file8
    ./file9
    

    四,mtime根据文件的时间查找

    选项:
    
    	-mtime  		# 最后修改时间 
    	
    	+n			# 多少天以前 
    	
    	-n			# 多少天以内
    	
    	 n			# 具体某一天 
    
    

    五,perm根据文件的权限查找

    选项:
    
    	-perm		# 根据权限查找 
    	
    	-421		# 包含这些权限 
    	
    	421		# 精确匹配  
    	
    	/421		# 包含其中的某个权限   三个身份中满足一个则匹配
    	
    	!	        # 取反  
    

    实例:

    #  查找/etc目录下所有用户都没有写权限的文件 
    find /etc/ -type f ! -perm /222 -ls  
    # /222表示三个身份中满足一个写权限则匹配 
    # 加!相反的意思就是只要有一个用户有写权限则不匹配(刚好满足题意)
    # 此题有点绕 好好想想应该能理解出来
     
    
    #  查找/etc目录下至少有一类用户没有写权限的文件
    find /etc/ -type f ! -perm 222  # 222 表示精确匹配三个身份都要满足有写权限
    #  取反的意思就是至少有一类用户没有写权限的文件就匹配
    

    六,user group根据文件的属主属组查找

    
    选项:
    
    	-user		# 根据属主
    	
    	-group		# 根据属组选项:
    
    	-user		# 根据属主
    	
    	-group		# 根据属组
    	
    	-nouser		# 没有属主
    	
    	-nogroup	# 没有属组
    	
    	-nouser		# 没有属主
    	
    	-nogroup	# 没有属组
    

    实例:

    # 在根下查找 属主是root 或者 属主是test 用户的文件 只要满足一个条件则匹配
    find / ( -user root -o -user test ) 
    # -o或则要用()包起来跟其他选项区分 不加()有时候容易混淆
    

    七 maxdepth根据文件的目录层级查找

    选项:
    
    	-maxdepth	# 最大的目录层级  	
    

    实例:

    #  在根目录下查找文件名字为'hostname'的文件最大的目录层级不能超过两层
    find / -type f -maxdepth 2 -name 'hostname'
    

    八,motion 根据动作来执行

    动作(放在文件的最后):
    
    -print		# 默认的动作 打印你所查找出来的文件的名称 
    
    
    -ls		# 把查找出来的文件以长格形式显示出来文件的详细信息  
    
    
    -delete		# 把查找出来的文件进行删除  只能删除空目录 
    
    
    -exec		# 后面加自定义的shell命令
    
    

    实例:

    # 在根目录下查找包含test昵称的文件名并删除
    find / -type f -name '*test*' -exec rm -f {} ;
    # -exec 找到的文件执行shell命令 {}表示前面匹配到条件的文件  
    # ;转义分隔符 表示命令的结束 不转移在-exec动作眼里表示shlle命令语句还没有写完
    
    

    十,find跟xargs命令的配合

    # finde 命令执行后的结果通过管道交给后面的命令执行需要用到xargs支持
    
  • 相关阅读:
    初学mongodb笔记
    git学习【转载】
    json序列化与反序列化
    ES6函数比对ES5函数
    前端js脚本与防止js脚本
    js函数整合队列顺序执行插件
    padding-使用必记
    css小技巧
    三分钟教会你开密码箱
    百度地图Marker优化方案
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/13388362.html
Copyright © 2020-2023  润新知