红联Linux门户
Linux帮助

3.关于find 的贴条。

发布时间:2009-11-09 11:02:25来源:红联作者:一米短绳
一,语法和参数:

1.语法:
find [PATH] [expression]

2.[PATH]:
搜索的根路径,find会沿着这个根通过计算expression向下搜索。如果没有指定PATH,那么默认是current。
同时,加绝对路径,则搜索结果将为绝对路径(通常用于某些特殊需要)
可以加多个PATH。

3.[expression]: [expression]=[Option]+[Action]

1)Options:
很多关于数字n参与的选项,n的意义如下:
+n : 大于n;
-n : 小于n;
n : 等于n。
这些用到n的选项有:(N可以代表上述三种n)
-atime N , -ctime N :分别为更改(access/change)天数。
-links N :链接数(hard link)。
-uid N , -gid N :用户ID和组ID

-size N[ck] :文件大小(c,bytes;k,Kb;)默认是block=0.5k=512b。
其它:
-lname:soft link。
-name :接查询目标的名字。
-newer file : file是存在的文件,newer指比这个file更新的文件。
-user,-group:用户,组的名字。
-nouser, -nogroup: 文件拥有者或拥有组不存在与/etc/passwd 或/etc/group中。

-perm N:文件权限。用类似774、0700等数字表示模式。+、-、=同N。

-type:文件类型(f,正规文件;b、c,设备文件;d,目录;l,链接文件;s,套接字;P,FIFO文件)




2)Action

-exec 命令表达式:

所有搜索到的正确结果(通过option计算值为真)将作为命令表达式的变量值直到遇到“;”。 而“;”需要进行“\”转义。即,“\;"为 整个变量值的结束标志。同时,用”{}“代表这些变量值交付给命令进行执行。
具体例子:find /usrbin -perm +4000 -exec ls -l {} \;
即搜索/usr/bin目录下有SUID权限的文件并详细列出。




二,关于-and 和 -or
find命令不同于linux shell 语法,所以使用时需要注意。以上仅列出比较常用的相关东西,还有很多参数、选项、类型、方法可以参考使用。

-and 和-or 就是比较好用的两个额外的参数选项。用来补充条件。

例如: -and 、-or 特殊逻辑选项的使用。
-and :类似”且“。比如 :
find /home -size +50k -and -size -100k :大于50M且小于100M的文件。

-or :类似”或“。比如:
find /home -user t1 -or -user t2 : 搜索属于t1或者是t2用户的文件。
文章评论

共有 3 条评论

  1. rnmo 于 2009-11-10 00:06:00发表:

  2. 一米短绳 于 2009-11-09 14:32:39发表:

    还有个 -fls 指定输出到某个文件
    关于 -ls 和 -fls 都是包括了inode等内容
    如果是在800*600标准终端环境下,如果没有特殊要求,单单用-ls会使输出变的错乱,所以一般非特殊情况不会使用。因此没有贴进。

    O(∩_∩)O

  3. acrofox 于 2009-11-09 12:10:36发表:

    find /usrbin -perm +4000 -exec ls -l {} \;
    这条跟 find /usrbin -perm +4000 -ls 的输出差不多,后者更简略些。