Chinaunix首页 | 论坛 | 博客
  • 博客访问: 367014
  • 博文数量: 83
  • 博客积分: 5322
  • 博客等级: 中校
  • 技术积分: 1057
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-11 11:27
个人简介

爱生活,爱阅读

文章分类

全部博文(83)

文章存档

2015年(1)

2013年(1)

2012年(80)

2011年(1)

分类: LINUX

2012-01-10 16:51:53

Find 命令

 

今天浏览了下linuxfind man文档,涉及的细节很多,仅把常用的部分整理出来,供后续丰富补充吧。

 

Find命令功能:

在一个目录结构中查找文件,正如其名

 

Find命令格式:

Usage: find [path...] [expression]

path默认为当前路径,expression默认为-print

Expressions有以下几种组成 OptionTestsActionOperators,分别简单列举其常见形式:

 

Options

-:在处理子目录之前先处理本目录中的内容

-daystart:(-atime-ctime-mtime-amin-cmin-mmin

-atime :文件访问时间,以天为单位。

    -atime -n:n天之内被访问

    -atime +n:n天之前被访问

    -atime  n:第n天被访问

-ctime :文件创建时间,以天为单位

    -ctime -n:n天之内被创建

    -ctime +n:n天之前被创建

    -ctime  n:第n天被创建

-mtime :文件更改时间,以天为单位

    -mtime -n:n天之内被更改   

    -mtime +n:n天之前被更改

    -mtime  n:第n天被更改

-amin:同-atime,不同的是单位为分钟

-cmin:同-ctime,不同的是单位为分钟

-mmin:同-mtime,不同的是单位为分钟


-nogroup:查找文件没有有效用户组文件(某用户建立了文件/文件夹,后,该用户组又通过groupdel删除掉了)
-nouser:查找文件没有有效用户属主文件(某用户建立文件/文件夹,后,该用户被userdel删除) 


Tests:

+nGreater than n;n天(分钟)之前

-nLess than n;n天(分钟)之内

nexact n;n天(分钟)

-anewer file:访问时间比file访问时间更近的文件

-cnewer file:创建时间比file创建时间更近的文件

-newer file:更改时间比file更改时间更近的文件

-name pattern:查找pattern模式的文件

-path pattern:指定pattern的路径查找

-perm mode:按照指定mode的权限查找文件

-size  n[bcwkMG]:按照指定大小查找文件

     b512 bytes block

     cbytes

     wtwo-byte word  

     k1024 bytes

     M:1024*1024 bytes

     G:Gigabityes

-type :按照文件类型查找

     bblock:块

     c:character:字符

     d:dir:目录

     f:regular file:常规

     l:symb link:链接

 

-maxdepth level:指定文件夹最大级别之内查找

 

-mindepth level:指定文件夹最小级别之外查找

ACTIONS:

-delete :删除文件

-exec command:执行shell指令

-fprint0 file:将查找结果输出到file,结果以‘\0’间隔

-fprint file:将查找结果输出到file,结果以换行间隔

-prune:查找时忽略指定的目录及其子目录

-ls:执行ls命令

OPERATORS:

EXP1 –and EXP2

EXP1 –or EXP2

 

举例:

1、  在当前目录下查找指定文件,并在stdout上输出:

[admin@localhost ~]$find  . –name pattern.c –print
-------------在当前目录及其子目录下查找pattern.c文件,并在stdout上显示结果

 

2、  在指定目录下查找某类型文件,并通过ls显示文件属性:

[admin@localhost ~]$find /home/admin –name “*.c” –type f –exec ls –l {} \;

       -------------/home/admin 下查找扩展名为.c的常规文件,并查看其属性

 

3、  查找指定大小, 指定若干天(分钟),前,后,指定类型的文件并删除:

[admin@localhost ~]$find /home –name “*.tmp” – type f –size 10k –mtime 5 –print –exec rm –rf {} \;

-------在home及其子目录下查找扩展名为.tmp 文件大小为10k修改时间为5天的文件,在stdout上显示后删除

 

4、  指定目录中查找文件,但不在其指定的子目录中查找

       [admin@localhost ~]$find /home/admin -path "/home/admin/.vim" -name "*.vim" –prune

    -------/home/admin及其子目录下查找*.vim 类型的文件,但不在其子目录.vim中查找

[admin@localhost ~]$find . –name “*.tmp” –size 0 –type f –print –exec rm –rf {} \;
--------------当前目录及子目录下查找并
删除大小为0,扩展名为tmp的常规文件

    

5,、仅在指定文件夹中查找特定文件,但不在其子目录中查找

[admin@localhost ~]$find / -maxdepth 1 -type d -size -100c

---------在/目录下查找目录文件,该目录文件大小小于100字节,仅查找当前目录,不在其子目录中查找

 

6、在指定目录的若干级子目录中查找

[admin@localhost ~]$find /home/admin -maxdepth 3 –type f –size 0 –exec rm {} \;

-----------在/home/admin目录下超找大小为0字节的文件,最多查找三级目录,且将符合要求的普通文件并删除

7、查找指定类型文件

    [admin@localhost ~]$find /mnt/hgfs/ -type l –print 

     ----------------------在/mnt/hgfs/目录及其子目录下查找链接文件

 

8、在根目录下查找xml扩展名属于用户admin其大小为0的普通文件并删除

[admin@localhost ~]$ find / -name "*.xml" -user admin -type f -size 0 –print –exec –rm {} \;

 

9、查找非特定类型的文件

[admin@localhost ~]$find / !-type d -print

      ------在根目录及其子目录下查找非目录文件,并于stdout上输出查询结果

 

10、另一种方式删除10天前size 0的文件方式

[admin@localhost ~]$find ./ -size 0 –mtime +10 | xargs rm -f & 

-----------当前目录及子目录下查找大小为0,十天前修改过的文件并删除之

 

11、查找权限位为755的普通文件

[root@localhost ~]# find . -perm 755 -type f -print

-----------当前目录及子目录下查找普通文件并在标准stdout上输出,该文件的权限为0755,

如果其他文件属性符合要求,但其他的bit位不符合,则不会被列出。

 

12、如下

  [admin@localhost ~]$find . -perm -741 -type f -print

-----------当前目录及子目录下查找普通文件并在标准stdout上输出,该文件owner具有读写执行

权限,本组用户有读权限,其他用户有执行权限。如果文件的其他bit位不是上述所列,也会

被输出,如另一个文件的属性为0773。

 

13、如下

[admin@localhost ~]$find . -perm -444 -perm /222 ! -perm /111

--------当前目录及子目录中查找文件访问权限为:对所有用户均可读,且至少是可写的(无论对owner,group,或者other),但均不可执行。

 

14、如下

 [admin@localhost ~]$find /HOME/admin/log -type f -mtime +3 -exec  -ok  rm {} \;

--------------在/HOME/admin/log目录中查找更改时间在3日以前的文件并删除它们:

 

阅读(2081) | 评论(1) | 转发(2) |
0

上一篇:linux下解压命令

下一篇:Fedora 安装mysql

给主人留下些什么吧!~~

重返人生2012-01-12 21:31:19

细节啊……没用过的很难体会的到