UNIX学习笔记(二) find命令的使用1

     有时可能需要在系统中查找具有某一特征的文件 (例如文件权限、文件属主、文件长度、文件类型等等)。这样做可能有很多原因。可能出于安全性的考虑,或是一般性的系统管理任务,或许只是为了找出一个不知保存在什么地方的文件。 F i n d是一个非常有效的工具,它可以遍历当前目录甚至于整个文件系统来查找某些文件或目录。

F i n d命令的一般形式为:

find pathname –options [-print –exec -ok]

该命令的参数:

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

 

1.使用name选项

文件名选项是f i n d命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。
不管当前路径是什么,如果想要在自己的根目录 $ H O M E中查找文件名符合* . t x t的文件,使用~作为' p a t h n a m e参数,波浪号~代表了你的$ H O M E目录。
$ find ~ -name "*.txt" -print
想要在当前目录及子目录中查找所有的‘* . t x t’文件,可以用:
$ find . -name "*.txt" -print
想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:
$ find . -name "[A-Z]*" -print
想要在/ e t c目录中查找文件名以h o s t开头的文件,可以用:
$ find /etc -name "host*" -print
想要查找$ H O M E目录中的文件,可以用:
$ find ~ -name "*" -print  或find . -print
要想让系统高负荷运行,就从根目录开始查找所有的文件。如果希望在系统管理员那里
保留一个好印象的话,最好在这么做之前考虑清楚!
$ find / -name "*" -print
如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是 * . t x t的文件,下面的命令就能够返回名为a x 3 7 . t x t的文件:
$ find . -name "[a-z][a-z][0--9][0--9].txt" –print

 

 

2.使用perm选项
如果希望按照文件权限模式来查找文件的话,可以采用 - p e r m选项。你可能需要找到所有用户都具有执行权限的文件,或是希望查看某个用户目录下的文件权限类型。在使用这一选项的时候,最好使用八进制的权限表示法。
为了在当前目录下查找文件权限位为 7 5 5的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:
$ find . -perm 755 -print
如果希望在当前目录下查找所有用户都可读、写、执行的文件(要小心这种情况) ,我们可以使用f i n d命令的- p e r m选项。在八进制数字前面要加一个横杠 -。在下面的命令中- p e r m代
表按照文件权限查找,而‘0 0 7’和你在c h m o d命令的绝对模式中所采用的表示法完全相同。
$ find . -perm -007 –print

 

3.

忽略某个目录
如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,
那么可以使用- p r u n e选项来指出需要忽略的目录。在使用 - p r u n e选项时要当心,因为如果你同
时使用了- d e p t h选项,那么- p r u n e选项就会被f i n d命令忽略。
如果希望在/ a p p s目录下查找文件,但不希望在/ a p p s / b i n目录下查找,可以用:
$ find /apps -name "/apps/bin" -prune -o -print

posted @ 2011-08-01 22:51  kevinboy  阅读(423)  评论(0编辑  收藏  举报