命令行一直是Linux用户用来解决问题的首要选择,今天给大家介绍一下Linux系统中的Find命令。正如它的名字所表示的,find是在磁盘中查找满足给定标准的文件和目录的应用程序。默认情况下,它从当前目录开始,向下扫描所有子目录。Find基于各种不同的文件属性来进行查询,而且可以对查询结果执行某种操作,通常是对每个查询结果运行一些程序。

  find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

     expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

    -mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案

    -amin n : 在过去 n 分钟内被读取过

    -anewer file : 比档案 file 更晚被读取过的档案

    -atime n : 在过去 n 天过读取过的档案

    -cmin n : 在过去 n 分钟内被修改过

    -cnewer file :比档案 file 更新的档案

    -ctime n : 在过去 n 天过修改过的档案

    -empty : 空的档案-gid n or -group name : gid 是 n 或是 group 名称是 name

    -ipath p, -path p : 路径名称符合 p 的档案,ipath 会忽略大小写

    -name name, -iname name : 档案名称符合 name 的档案。iname 会忽略大小写

    -size n : 档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k表示 kilo

    bytes,w 是二个位元组。-type c : 档案类型是 c 的档案。

    d: 目录

    c: 字型装置档案

    b: 区块装置档案

    p: 具名贮列

    f: 一般档案

    l: 符号连结

    s: socket

    -pid n : process id 是 n 的档案
    
  你可以使用 ( ) 将运算式分隔,并使用下列运算。

    exp1 -and exp2

    ! expr

    -not expr

    exp1 -or exp2

    exp1, exp2

    范例:

  将目前目录及其子目录下所有延伸档名是 c 的档案列出来。

     # find . -name "*.c"     

  将目前目录其其下子目录中所有一般档案列出

     # find . -ftype f
  

  将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出

    # find . -ctime -20  

    find . -name "*" -exec grep xxx {} ; -print  morexxx为你想要找的字符串

  让我们来看一些例子:首先,为了在当前目录或子目录中查找所有html文件,我们可以使用:find -name "*.html" -type f

  该命令有两个测试条件,第一个,“-name”用于检验搜索过程中的每个文件名,如果你需要对大小写敏感,可以使用“-iname”代替。第二个参数是“-type”,它用于指定你感兴趣的文件类型。“f”表示我们查找的是普通文件,我们可以使用“d”表示目录或使用“l”表示符号连接。在find 手册中可以看到该工具的所有选项。


創作者介紹

經驗交流分享與備忘

Frank 發表在 痞客邦 PIXNET 留言(0) 人氣()