• 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

  • 相关阅读:
    人生中第一份值得纪念的工作
    ZOJ 3829 Known Notation(字符串处理 数学 牡丹江现场赛)
    java基础之内部类
    从计算的本质到编程语言
    【Cocos2dx】资源目录,播放背景音乐,导入外部库
    POJ 3723 Tree(树链剖分)
    hdu 1002 A + B Problem II(大正整数相加)
    时间格式字符串转化为date和时间戳
    深入浅出游戏算法(4)-unity3d算法(1)-球转动
    GeoServer手动发布本地Shapefile地图
  • 原文地址:https://www.cnblogs.com/zhangzhiqin/p/10404451.html
Copyright © 2020-2023  润新知