文件的搜素命令which whereis locate find

文件的搜素命令(which whereis locate find)

1、which 查找可执行的文件 搜索命令所在路径以及别名
路径:在PATH环境指定的路径中:

	[root@localhost ~]# which ll
    alias ll='ls -l --color=auto'
    /usr/bin/ls

2、whereis 查看文件的位置( 只能用于搜索程序名 搜索命令所在的路径以及帮助文档所在位置)

b:只查找可执行文件
-m:只查找帮助文件

[root@localhost ~]# whereis find
find: /usr/bin/find /usr/share/man/man1/find.1.gz
[root@localhost ~]# whereis -b find
find: /usr/bin/find
[root@localhost ~]# whereis -m find
find: /usr/share/man/man1/find.1.gz

3、locate
locate:
依赖于事先构建好的索引库,定时更新索引库 updatedb更新
查找速度快,模糊查找

 yum install  mlocate  -y
-b:只匹配路径中的基名
-c:统计总共有多少符合条件个文件

4.find: 实时查找工具
find 路径 模式:
find [options] [查找的起始路径] [查找条件] [处理动作]

查找的起始路径:指定具体的搜索目录,默认为当前目录
查找条件:指定查找的标准,大小,文件名,类型。默认是指定路径下的所有文件
处理动作:符合查找条件的文件做出的操作,例如cp,rm,默认为输出到标准输出

  • 组合测试

     			与 -a 
     			或 -o
     			非:-not  !
    
  • 文件名查找:

-name “pattern” 引号需要加
支持通配符 * ? [] [^]
-iname “pattern” 不区分大小写
基于正则表达式模式查找
-regex “pattern” 匹配整个路径 而不是文件名
find / -regex /t./f.

  • 根据文件的从属关系查找

     			-user   属主
     			-group  属组
     			-uid  GID  属主ID
     			-gid  GID  属组ID
     			-nouser  没有属主的文件
     			-nogroup 没有属组的文件
    
  • 根据文件类型查找

     		-type  TYPE
     		f:普通文件
     		d:目录
     		b:块设备文件
     		l:链接文件
     		c:字符设备文件
     		p:管道文件
     		s:socket套接字文件
    
  • 根据文件的大小查找

     			-size  [+|-] #UNIT
     			#UNIT:(#-1,#]
     			-#UNIT:[0,#-1)
     			+#UNIT:(#,OO)
    
  • 根据时间戳查找

    1.以天为单位
    			-atime   [+|-]# 文件最后访问时间
    			-mtime	 [+|-]# 文件最后修改时间
    			-ctime   [+|-]# 文件最后改变时间
    				#:[#,#-1): 10   大于等于10天前,小于9天前
    				-#:(#,0]    -10  最后的访问时间10天以内
    				+#:(oo,#-1] +10  最后的访问时间在9天以前,包括9天
    
    			查找最近10天访问的文件
    
    2.以分钟为单位
    				-amin  [+|-]#
    				-mmin  [+|-]#
    				-cmin  [+|-]#
    
  • 根据文件权限来查找

     			-perm  mode   777   rwx  421    
     			权限对象:三类  属主 属组 其他
     			权限位: 读  写 执行   r w x    4  2  1   
     			mode 精确查找
     			/mode:任何一个权限对象中满足其一即可
     			-mode:所有都需要满足
    
        421  精确,9位权限位所有的权限位保持一致
     	/421 只要包含,且9位权限中每个权限中有一个满足即可     或
     	-421 只要包含,且9位权限中每个权限均要满足             与
    
  • 目录层级

    -path 基于目录层级

     			基于目录深度查找
    
     			-maxdepth 最大深度
     			-mindepth 最小深度
    
     查找/tmp目录下第三层目录中的文件
     		[root@nebula tmp]# find /tmp/ -maxdepth 3   -mindepth 3 -name "file*"
     		/tmp/test/test/file_test
     		[root@nebula tmp]# find /tmp/ -maxdepth 4   -mindepth 4 -name "file*"
     		/tmp/test/test/test/file_new
    

处理动作:

-print: 默认动作,输出到标准输出
-fls /path/to/somefile:将查找到的文件的长格式信息写入到指定文件中
-ok commond {} ; 对执行的每个文件做commond操作,每次的操作需要用户确认
-exec commond {} ; 对执行的每个文件做commond操作
-xargs -0 commond {} ;

练习:整理find用法,熟练掌握使用
1)查找/var目录下属主为root,且属组为mail的所有文件或目录;

[root@localhost ~]# find /var -user root -group mail -ls
50351457    0 drwxrwxr-x   2 root     mail            6 4月 11  2018 /var/spool/mail
  1. 查找/etc目录下大于1M且类型为普通文件的所有文件; -type f 普通文件; ls -lh较查看的详细信息

[root@localhost ~]# find /etc -type f -size +1M -exec ls -lh {} ;
-r–r--r–. 1 root root 7.6M 4月 8 22:32 /etc/udev/hwdb.bin
-rw-------. 1 root root 3.8M 11月 3 2018 /etc/selinux/targeted/active/policy.kern

  1. 查找/etc目录下所有用户都没有写权限的文件; -type f

[root@localhost ~]# find /etc -not -perm /222 -type f -ls

  1. 查找/etc目录至少有一类用户没有执行权限的文件

[root@localhost ~]# find /etc -not -perm -111 -type f -ls

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值