• 1-12 RHEL7-find命令的使用


    1、文件查找find
    find命令是在目录结构中,搜索文件,并执行特定的操作
    find命令提供了相当多的查找条件,功能很强大

    2、格式
    usage:find pathname -options[-print]

    find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

    3、参数
    -print 输出   (有时可有可无、有时必须有、有时必须无)
    pahtname:路径  #在指定路径中搜索

    4、选项
    -option:(选项)

    -name ""   #根据文件名称进行查找
    -perm       #根据文件权限进行查找
    -prune      #忽略,如果是个目录,则不进入查找
    -depth      #在指定目录中查找后,进入其子目录查找,
                     #当有-depth选项时,忽略prune
    -user         #根据文件属主查找
    -nouser    #查找没有属主的文件(在/etc/passwd中没有这个用户),不需要加用户名
    -group     #根据文件属组查找
    -nogroup #查找没有属组的文件,同nouser
    -mtime -n +n  atime ctime mtime  #根据文件修改时间查找,
                                                            #-n n天以内,+n n天以前(不是未来时间哦)
    -type [b,d,c,p,l,f]#根据文件类型查找
                 b块设备、d目录、c字符设备、p管道、l连接、f普通
    -size     #根据文件长度进行查找
    -fstype  #在某个文件系统中查找文件
    -mount #不再其他的文件系统中查找,不跨越挂载点
    -follow #如果找到的是连接文件,则会跟随到源文件
    -cpio    #将查找到的结果,备份     木有这个选项啊?!


    ================================================


    echo $HOME   #查看home变量的值,即确定~所代表的路径

    实验:
    1.通过文件名查找
    文件名选项是find命令最常用的选项,
    要么单独使用该选项,要么和其他选项一起使用。

    注意
    可以使用某种文件名模式来匹配文件,
    记住要用引号将文件名模式引起来。

    不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.txt的文件,
    使用~作为 'pathname'参数,波浪号~代表了你的$HOME目录。

    想要在/etc目录中查找文件名以host开头的文件,可以用:

    [root@xiaogan ~]# find /etc -name "host*"
    [root@xiaogan ~]# find /etc -name "host*" -print

    [root@xiaogan ~]# find ~ -name "*.txt" -print #必须带""

     

    2.通过权限查找
    按照文件权限模式用-perm选项,

    按文件权限模式来查找文件的话。最好使用八进制的权限表示法。

    举例:
    如在当前目录下查找文件权限位为755的文件,
    属主可以读、写、执行,其他用户可以读、执行的文件,
    可以用:
    [root@xiaogan ~]# find ~ -perm 777

     

    3.忽略
    使用-prune选项来指出需要忽略的目录。

    在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略。
    [root@xiaogan ~]#find test -path “test/dir0” -prune -o -print
    忽略目录test/dir0中的文件

    -path -prune 用法:详见find命令中选项-path和-prune的使用

    4.depth
    希望先匹配当前所有的文件,再在子目录中查找。
    在下面的例子中, find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件。

    它将首先匹配所有的文件然后再进入子目录中查找。
    [root@xiaogan ~]#find test -depth -path “test/dir0/*” -print
    注释:-depth要在路径前面,不然会警报

     

    5.user nouser
    [root@xiaogan ~]#find /opt -user xiaogan

    [root@xiaogan ~]#find /opt -nouser

     

    6.组
    同5


    7.mtime
    如果希望按照更改时间来查找文件,可以
    使用mtime,atime或ctime选项。
    如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。

    用减号-来限定更改时间在距今n日以内的文件,
    用加号+来限定更改时间在距今n日以前的文件。

    希望在系统/root目录下查找更改时间在5日以内的文件,

    find /root -mtime -5 -print

    [root@xiaogan ~]#find . -mtime -3 #查找3天内修改过的文件

    [root@xiaogan ~]#find . -mtime +3 #查找3天前修改过的文件

     

    8.type  !

    -type 查找某一类型的文件,
    b - 块设备文件。
    d - 目录。
    c - 字符设备文件。
    p - 管道文件。
    l- 符号链接文件。
    f - 普通文件。
    ! 取反
    在/etc目录下查找所有的目录,可以用:
    find /etc -type d -print

    在当前目录下查找除目录以外的所有类型的文件,
    [root@xiaogan ~]# find . ! -type d

    在/etc目录下查找所有的符号链接文件
    find /etc -type l -print
    [root@xiaogan ~]#find /dev -type b #查找/dev目录下的块设备文件

    [root@xiaogan ~]#find /dev ! -type b #查找/dev目录下的非块设备文件

    [root@xiaogan ~]# find / -type p


    9.size

    -a -o   -a  and  -o or  -not 非 !非
    可以按照文件长度来查找文件;
    这里所指的文件长度既可以用块(block)来计量,
    也可以用字节来计量。
    以字节计量文件长度的表达形式为N c;
    以块计量文件长度只用数字表示即可。

    在按照文件长度查找文件时,一般使用这种以字节表示的文件长度,在查看文件系统的大小,因为这时使用块来计量更容易转换。

    在当前目录下查找文件长度大于1 M字节的文件:


    find . -size +1000000c -print

    在/home/apache目录下查找文件长度恰好为100字节的文件:
    find /home/apache -size 100c -print

    在当前目录下查找长度超过10块的文件(一块等于512字节):

    find . -size +10 -print


    find /etc/ -size +20k -a -size -50k
    -a  and  并且   -o or 或者
    + 超过  -  低于
    [root@xiaogan ~]#find . -size +20k -a -size -30k #查找当前目录下大小在20k~30k之间的文件

  • 相关阅读:
    第34周二
    JAVA数组的定义及用法
    最小生成树(普利姆算法、克鲁斯卡尔算法)
    再谈Hibernate级联删除——JPA下的Hibernate实现一对多级联删除CascadeType.DELETE_ORPHAN
    站点系统压力測试Jmeter+Badboy
    AfxMessageBox和MessageBox差别
    最长递增子序列
    JAVA Metrics 度量工具使用介绍1
    递归函数时间复杂度分析
    HDU 5052 LCT
  • 原文地址:https://www.cnblogs.com/xiaogan/p/5769396.html
Copyright © 2020-2023  润新知