zoukankan      html  css  js  c++  java
  • find 命令

    转自:https://www.runoob.com/w3cnote/linux-common-command-2.html

    用于在文件树中查找文件,并作出相应的处理。

    命令格式:

    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

    查找等于 1000 字符的文件

    find -size 1000c 

    -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
    诸位正值青春年少,一定恣情放纵,贪恋香艳梅施之情,喜欢风流雅韵之事,洒脱木拘。然而诸位可知,草上露一碰即落,竹上霜一触即溶,此种风情难于长久。
  • 相关阅读:
    vue事件处理器--v-on
    vue循环-- v-for
    node-Socket编程
    JsonWebToken
    Mongodb 数据库
    Nodejs库-EXPRESS
    yarn和npm的区别
    Vue学习笔记【22】——Vue中的动画(列表的排序过渡)
    Vue学习笔记【21】——Vue中的动画(v-for 的列表过渡)
    Vue学习笔记【20】——Vue中的动画(使用动画钩子函数)
  • 原文地址:https://www.cnblogs.com/shilipojianshen/p/13426331.html
Copyright © 2011-2022 走看看