zoukankan      html  css  js  c++  java
  • find 命令详细解释

    命令格式:
    find pathname -options [-print -exec -ok ...]

    命令参数:
    pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
    -print: find命令将匹配的文件输出到标准输出。
    -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形为'command' { } ;,注意{ }和;之间的空格。
    -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

    命令选项:
    -name 按照文件名查找文件
    -perm 按文件权限查找文件
    -user 按文件属主查找文件
    -group 按照文件所属的组来查找文件。
    -type 查找某一类型的文件,诸如:
    b - 块设备文件
    d - 目录
    c - 字符设备文件
    l - 符号链接文件
    p - 管道文件
    f - 普通文件
    -size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小
    -amin n 查找系统中最后N分钟访问的文件
    -atime n 查找系统中最后n*24小时访问的文件
    -cmin n 查找系统中最后N分钟被改变文件状态的文件
    -ctime n 查找系统中最后n*24小时被改变文件状态的文件
    -mmin n 查找系统中最后N分钟被改变文件数据的文件
    -mtime n 查找系统中最后n*24小时被改变文件数据的文件
    (用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )
    -maxdepth n 最大查找目录深度
    -prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略
    -newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项。

    实例:
    (1)查找48小时内修改过的文件
    find -atime -2

    (2)在当前目录查找 以.log结尾的文件。 ". "代表当前目录
    find ./ -name '*.log'

    (3)查找/opt目录下 权限为 777的文件
    find /opt -perm 777

    (4)查找大于1K的文件
    find -size +1000c

    find -size 1000c 查找等于1000字符的文件
    -exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名。
    (5)在当前目录中查找更改时间在10日以前的文件并删除它们(无提醒)
    find . -type f -mtime +10 -exec rm -f {} ;

    (6)当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。 按y键删除文件,按n键不删除
    find . -name '*.log' mtime +5 -ok -exec rm {} ;

    (7)当前目录下查找文件名以passwd开头,内容包含"pkg"字符的文件
    find . -f -name 'passwd*' -exec grep "pkg" {} ;

    (8)用exec选项执行cp命令
    find . -name '*.log' -exec cp {} test3 ;
    -xargs find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
    实例:
    (9)查找当前目录下每个普通文件,然后使用xargs来判断文件类型

    find . -type f -print | xargs file

    (10)查找当前目录下所有以js结尾的并且其中包含'editor'字符的普通文件
    find . -type f -name "*.js" -exec grep -lF 'ueditor' {} ;
    find -type f -name '*.js' | xargs grep -lF 'editor'

    (11)利用xargs执行mv命令
    find . -name "*.log" | xargs -i mv {} test4

    (12)用grep命令在当前目录下的所有普通文件中搜索hostnames这个词,并标出所在行
    find . -name *(转义) -type f -print | xargs grep -n 'hostnames'

    (13)查找当前目录中以一个小写字母开头,最后是4到9加上.log结束的文件
    find . -name '[a-z]*[4-9].log' -print

    (14)在test目录查找不在test4子目录查找
    find test -path 'test/test4' -prune -o -print

    (15)实例1:查找更改时间比文件log2012.log新但比文件log2017.log旧的文件
    find -newer log2012.log ! -newer log2017.log

    使用depth选项:
    depth选项可以使find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。
    实例:find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件。 它将首先匹配所有的文件然后再进入子目录中查找
    find / -name "CON.FILE" -depth -print

  • 相关阅读:
    我这里面所用的DBHelper
    同时向主表和从表里面导入execl数据 (asp.net webform)
    在asp.net webform中的 gridview 里面的一些基本操作
    在ASP.NET WEBFORM 中后台实现gridview全选功能
    asp.net webform 发送电子邮件
    Asp.Net中的三种分页方式
    asp.net获取客户端浏览器及主机信息
    在asp.net webfrom 中上传execl (读取单个sheet的数据)
    Linux五种IO模型性能分析
    epoll/poll/select的原理
  • 原文地址:https://www.cnblogs.com/zhangzhiqin/p/10404451.html
Copyright © 2011-2022 走看看