find命令学习

    1. find命令与locate命令的区别:
      1. locate:
        1. 非实时查找;
        2. 依赖于索引,而索引构建非常占用资源,索引的创建是在系统空闲时系统自动进行,可以用updatedb命令更新索引;
        3. 查找速度快;
        4. 非精确查找;
      2. find:递归地在层次目录中搜索符合条件的文件;
        1. 实时查找;
        2. 精准查找 (系统上实时的有就是有没有就是没有);
        3. 精确查找 (查找结果绝对符合查找条件才予显示);
        4. 查找速度慢;
    2. find使用方法:默认使用当前目录;

      find  [搜索路径]  [搜索条件]  [处理动作]

  1. find搜索条件
    1. -name/-iname:根据用户相关的参数进行查找;
      1. -iname:    按照文件名来搜索(可以使用通配符);

        通配符有:*:      匹配任意多个字符;

        ?:      匹配任意一个字符;

        []:     匹配任意一个中括号内的字符;

        [^]:   匹配任意一个不在中括号内的字符;

      2. -iname:    按照文件名来搜索,并忽略大小写(可以使用通配符);
      3. -user:              按照文件所有者搜索;
      4. -group:           按照文件所属组搜索;
      5. -nouser:          搜索不属于这个用户的文件;
      6. -nogroup:        搜索不属于这个用户组的文件;
      7. -uid:               按照用户UID搜索;
      8. -gid:                按照用户GID搜索;
    2. 组合条件查询;
      1. -a:    与(and),同时满足两个条件,条件一不满足就不执行条件二;
      2. -o:    或(or),   两个条件只需要满足一个条件;
      3. -not:   非,两个条件的值取反;非A并且非B==非(A或B),非A或非B==非(A与B)
    3. -type:根据文件类型查找文件;
      1. f:    普通文件
      2. d:    目录文件
      3. b:    块设备文件
      4. c:    字符设备文件
      5. l:    符号链接文件
      6. p:    命令管道文件
      7. s:    套接字文件
    4. -size:根据文件大小查找文件。常用单位:G、M、k,注意M大写,k小写;
      1. -size -10k:    搜索文件大小小于10k的文件;
      2. -size 10M:    搜索文件大小为10M的文件;(#+1)>X>=#
      3. -size +10G:    搜索文件大小大于10G的文件;
    5. -time:根据文件时间查找文件;
      1. 以天为单位(time);
        1. -atime 10:     搜索10天前当天访问的文件;(#+1)>X>=#
        2. -mtime -10:    搜索10天内修改过的文件;
        3. -ctime +10:    搜索10天修改过文件属性的文件;
      2. 以分钟为单位(min);
        1. -amin 10:     搜索10分钟前当天修改的文件;(#+1)>X>=#
        2. -mmin -10:    搜索10分钟内修改过的文件;
        3. -cmin +10:    搜索10分钟前修改过文件属性的文件;
    6. -perm:根据文件权限查找文件;
      1. MODE:     精确匹配;
      2. +MODE:    任何一类用户任何一位权限匹配,常用于某类用户的某特定权限是否存在;
      3. -MODE:    每类用户指定的权限位都要匹配;
  2. find处理动作;
    1. -print:           打印在标准输出上;
    2. -ls:             以长格式输出各文件信息;
    3. -exec COMMAND \;:    对查找到的文件执行指定的命令,查找结果太多可能导致命令溢出;

      1

      [[email protected] tmp]# find /tmp/ -perm -001 -type f -exec ls -l {} \;

    4. -ok COMMAND \;:      对查找到的文件交互式执行命令;
    5. find | xargs COMMAND:  对查找到的文件执行交互命令;

      1

      [[email protected] tmp]# find /tmp/ -perm -003 -type f | xargs chmod o-wx

  3. find命令练习:
    1. 将/tmp/目录下所有文件后缀为xls的修改为xlsx;


      1

      2

      3

      4

      5

      6

      7

      8

      9

      [[email protected] tmp]# ll

      -rw-rw-r-- 1 hadoop    hadoop    0 Jul 26 16:38 hadoop.doc

      -rwxr-xr-- 1 root      hadoop    0 Jul 29 21:50 hadoop.xls

      -rwxr-xr-x 1 openstack openstack 0 Jul 26 16:38 openstack.xlsx

      [[email protected] tmp]# find /tmp/ -iname "*.xls" -exec mv {} {}x \;

      [[email protected] tmp]# ll

      -rw-rw-r-- 1 hadoop    hadoop    0 Jul 26 16:38 hadoop.doc

      -rwxr-xr-- 1 root      hadoop    0 Jul 29 21:50 hadoop.xlsx

      -rwxr-xr-x 1 openstack openstack 0 Jul 26 16:38 openstack.xlsx

    2. 查找/tmp目录中属主为root且属组为hadoop的文件;

      1

      [[email protected] tmp]# find /tmp/ -user root -a -group hadoop -ls

    3. 查找/tmp目录下不属于root、hadoop或bin的所有文件;

      1

      [[email protected] tmp]# find /tmp/ -not -user root -not -user hadoop -not -user bin -ls

    4. 查找/var/log目录下最近一周内容修改过且不属于root或hadoop的文件;

      1

      [[email protected] tmp]# find /var/log/ -mtime -7 -not -user root -not -user hadoop

    5. 查找当前系统没有属主或属组且最近一个月内被访问的文件;

      1

      [[email protected] ~]# find / \(-nouser -o -nogroup\) -atime -30

    6. 查找/var/log目录下大于1M且类型为普通文件的所有文件;

      1

      [[email protected] ~]# find /var/log/ -size +1M -type f

    7. 查找/etc/init.d目录下所有用户没有写权限的文件;

      1

      [[email protected] ~]# find /etc/init.d/ -perm -222

    8. 查找/etc/init.d目录下至少一类没有写权限的文件;

      1

      [[email protected] ~]# find /etc/init.d/ -perm +222

    9. 查找/etc/init.d目录下,所有用户都有执行权限及其他用户有写权限的文件;

      1

      [[email protected] ~]# find /etc/init.d/ -perm -113

时间: 2024-08-27 23:38:26

find命令学习的相关文章

linux五大搜索命令学习

五大搜索命令学习 分别解释locate,find,which,whereis,grep 五大linux搜索命令 locate 解释:由man手册可以看出,locate查找就是根据文件名进行查找,只是依赖于updatedb命令.该命令更新linux中的查找数据库/var/lib/locatedb 这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在使用 locate之前,先使用update

基础命令学习总结

基础命令总结: 1.获取帮助命令: help man info 2.日期时间命令: date hwclock cal 3.系统管理命令: shutdown halt reboot poweroff bash tty 4.文件管理命令: cd type file echo which  whereis whatis dirname basename makewhatis mkdir pwd      touch 基础命令学习总结,布布扣,bubuko.com

Git命令学习之旅——日志和穿梭版本号

在总结了git命令的基础之后,接下来我们看一下基础的一些进阶内容:删除撤销命令.日志查看命令等 既然有加入文件的功能,那么相相应的肯定有移除文件的功能,命令例如以下:git rm [文件名称] 在输入命令之后,例如以下图所看到的: 提示已经删除了"c.txt"文件.这个时候再用git status查看一下状态,例如以下图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JB

Java命令学习系列(7):Javap(转)

原文出处: Hollis(@Hollis_Chuang) javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码. 一般情况下,很少有人使用javap对class文件进行反编译,因为有很多成熟的反编译工具可以使用,比如jad.但是,javap还可以查看java编译器为我们生成的字节码.通过它,可以对照源代码和字节码,从而了解很多编译器内部的工作. 实例 javap命令分解一个class文件,它根据options来决定到底输出什么.如果没有使用options,那么

linux shell 命令学习(5) xxd- make a hexdump or do the reverse.

对于标准输入或者给定的文件,显示其16进制的内容.也可以反过来进行转换. ? 1 2 3 xxd -h[elp] xxd [options] [infile [outfile]] xxd -r[evert] [options] [infile [outfile]] 如果没有指定输入文件, 则采用标准输入. -b: 以2进制格式进行输出 ? 1 2 3 4 [[email protected] src]$ xxd -b train.ini 0000000: 01011011 01110100 01

Linux命令学习之—每天发一个命令—mkdir

Linux命令学习之-每天发一个命令-mkdir mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1.命令格式: mkdir [选项] 目录... 2.命令功能: 通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录.要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限.并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能

sqlplus 命令学习

sqlplus 命令学习 $ sqlplus  / as sysdba SQL> help index 可以输入sqlplus 命令 Enter Help [topic] for help. @             COPY         PAUSE                    SHUTDOWN @@            DEFINE       PRINT                    SPOOL /             DEL          PROMPT  

git命令学习

git命令学习 首先应该配置一下你的身份,这样在提交代码的时候 Git 就可以知道是谁提交的了,命令如下所示: git config --global user.name "xxx" git config --global user.email "[email protected]" 查看全局的用户名和用户提交邮箱直接输入下面命令回车 git config --global user.name git config --global user.email 使用git

Linux命令学习Day1

一直想学习Linux命令行,但是总是没有坚持.[Linux命令学习]系列博客将会记录我学习命令行的点点滴滴. 今天自己学习的4个命令: uname -- 查看系统信息 find -- 查找命令 dos2unix – Dos文件转换成Unix文件 cat -- 显示命令 下面简要描述下这几个命令. uname常用的几个选项: -a(打印所有信息) -s(内核名字) -r(内核版本) find功能强大,常用的语法格式: 路径 -- 在find命令后开始搜索的路径,若未指定则默认从当前路径开始搜索 -

Linux学习笔记(十一)--命令学习(文件权限属性)

在进行新内容学习前,我们先把上面的内容简单的回顾下: 绝对路径:『一定由根目录 / 写起』:相对路径:『不是由 / 写起』 特殊目录有:., .., -, ~, ~account需要注意: 与目录相关的命令有:cd, mkdir, rmdir, pwd 等重要命令: rmdir 仅能删除空目录,要删除非空目录需使用『 rm -r 』命令: ls 可以检视文件的属性,尤其 -d, -a, -l 等选项特别重要! 文件的复制.删除.移动可以分别使用:cp, rm , mv等命令来操作: 检查文件的内