Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2258555
  • 博文数量: 218
  • 博客积分: 5767
  • 博客等级: 大校
  • 技术积分: 5883
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-01 14:44
文章存档

2012年(53)

2011年(131)

2009年(1)

2008年(33)

分类: LINUX

2008-05-12 23:57:29

首先我们来看看find的总体用法
  find path option [-print -exec -ok]
  其中path是指定在哪个路径中查找内容。如/var下查找内容,option是find中的一些属性值,常用的有-name,-type,-mtime,-ctime,-atime,-user,-group,-nouser,-nogroup,-perm等,[-print -exec -ok]是可选属性值,-print是指把查找到的内容输出到指定的地方,-exec与-ok都是执行另处的command命令,但两都也有一点不同,-exec在执行指定的command时不会给用户显示提示或操作信息,但是-ok就会在有提示询问操作时给用户显示信息,直到用户做了选择时才继续执行。
   
  常用的option值说明
  -name 指定查找的内容是文件。
  -type 指定查找的文件的类型,它有d,l,b,p,f,c等文件类型,d是查找目录,l是查找链接档,b是查找块文件,p是查找管道文件,f是普通文件,c是字符设备文件
  -mtime,-ctime,atime都是指按时间查找,-mtime是文件的修改时间,-ctime是文件的创建时间,atime是后找开文件时间
  -user是查找指定用户帐号的文件
  -group是查找指定组帐号的文件
  -nouser查找无用户帐号文件
  -nogroup是查找无组帐号文件
   
  下面举几个例子说明一下find的用法
  (1)我想找出/etc目录下是passw开头的所有文件
     find /etc -name "passw*"
  这个例子中"*"号是正则匹配中的“所有”的意思
  (2)我想找出/var/log目录下所有的前5天的.log文件
     find /var/log -name "*.log" -mtime +5
  这个例子中"+5"是指5天以前的文件,如是查"-5"则是5天以内的文件
  (3)我想找出/home目录下是"ygl"这个用户的文件
     find /home -user "ygl"
  (4)我想找出/home目录下是"ygl"这个用户的所有的普通档的文件
     find /home -user "ygl" -type f
  (5)我想找出/var/log目录下的所有的.log文件并查看它的详细信息
     find /var/log -name "*.log" -type f -exec ls -l {} \;
  这个例子中用到了可选属性-exec用来执行ls命令,其中的-exec或者-ok的用法都要在它所执行的command后面接" {} \;"
  (6)我想查找出在/etc中以passw开头的所有文件中有没有ygl这些内容的
     find /etc -name "passw*" -exec grep -in "ygl" {} \;
   (7)对当前目录下所有文件执行一次touch(同步时间)
      find . -exec touch {} \;
   (8)查找当前目录下所有.svn目录中的文件
      find ./ -type f -and  -path \*/.svn\* -print
   (9)删除当前目录下所有目录为.svn的文件
     find ./  -type d -name .svn -exec rm -rf {} \;
    find ./ -type f -and  -path \*/.svn\* -exec rm -rf {} \;
     find ./ -name ".svn" | xargs -r rm -rf
   (10)将 指定目录/usr下的除zh_CN外的文件夹都删除,locale.alias和zh_CN目录内的东西不能删除
     find /usr/* -maxdepth 0 -type d ! -iregex ".*zh.CN" -exec echo {} \;
     find /usr/* -maxdepth 0 -type d ! -iregex ".*zh.CN" -exec rm -rf {} \;
    由于设置了maxdepth 0。所有只对/usr/这个文件夹操作exec后面的echo,那当然是列出全部内容了,当然也包括zh_CN。
如果使用 find . -type d 命令,则会将目录下面的子目录也一并显示出来。
-prune
使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
  由上面几个例子中可以看出find命令的强大。在实际的使用过程中,你将会发现find将会给你带来太多的方便
阅读(1162) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~