一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Linux find命令查找文件参数说明

时间:2013-10-22 编辑:简简单单 来源:一聚教程网


1、find命令的一般形式为;

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


1. find

find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。

find的使用格式如下:

  $ find <指定目录> <指定条件> <指定动作>

  - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。

  - <指定条件>: 所要搜索的文件的特征。

  - <指定动作>: 对搜索结果进行特定的处理。

如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

find的使用实例:

  $ find . -name 'my*'

搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。

  $ find . -name 'my*' -ls

搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。

  $ find . -type f -mmin -10

搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。


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

 

find 命令有几个用于根据您系统的时间戳搜索文件的选项。这些时间戳包括

mtime  文件内容上次修改时间
atime  文件被读取或访问的时间
ctime  文件状态变化时间

mtime 和 atime 的含义都是很容易理解的,而 ctime 则需要更多的解释。由于 inode 维护着每个文件上的元数据,因此,如果与文件有关的元数据发生变化,则 inode 数据也将变化。这可能是由一系列操作引起的,包括创建到文件的符号链接、更改文件权限或移动了文件等。由于在这些情况下,文件内容不会被读取或修改,因此 mtime 和 atime 不会改变,但 ctime 将发生变化。

这些时间选项都需要与一个值 n 结合使用,指定为 -n、n 或 +n。

N * 24
+1 表示 1 * 24 +24小时以外..
+0 表示 0 * 24 +24小时以外
1 表示 1 * 24 + 24 到 24 之间..
0 表示 0 * 24 + 24 到 0 之间..
-1 表示 0 * 24 +24 内,甚至为未来时间...

1.当前时间24小时—当前时间(昨天-今天)
#find . -mtime 0
2.当前时间48小时前–当前时间24小时前(前天-昨天)
#find . -mtime 1
3.当前时间48小时前(2天前)
#find . -mtime +1
4.当前时间24小时–当前时间(昨天-今天)
#find . -mtime -1

参数及说明

  1. -name   filename             #查找名为filename的文件 
  2. -perm                        #按执行权限来查找 
  3. -user    username             #按文件属主来查找 
  4. -group groupname            #按组来查找 
  5. -mtime   -n +n                #按文件更改时间来查找文件,-n指n天以内,+n指n天以前 
  6. -atime    -n +n               #按文件访问时间来查GIN: 0px"> 
  7.  
  8. -ctime    -n +n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 
  9.  
  10. -nogroup                     #查无有效属组的文件,即文件的属组在/etc/groups中不存在 
  11. -nouser                     #查无有效属主的文件,即文件的属主在/etc/passwd中不存 
  12. -newer   f1 !f2              找文件,-n指n天以内,+n指n天以前  
  13. -ctime    -n +n               #按文件创建时间来查找文件,-n指n天以内,+n指n天以前  
  14. -nogroup                     #查无有效属组的文件,即文件的属组在/etc/groups中不存在 
  15. -nouser                      #查无有效属主的文件,即文件的属主在/etc/passwd中不存 
  16. -newer   f1 !f2               #查更改时间比f1新但比f2旧的文件 
  17. -type    b/d/c/p/l/f         #查是块设备、目录、字符设备、管道、符号链接、普通文件 
  18. -size      n[c]               #查长度为n块[或n字节]的文件 
  19. -depth                       #使查找在进入子目录前先行查找完本目录 
  20. -fstype                     #查更改时间比f1新但比f2旧的文件 
  21. -type    b/d/c/p/l/f         #查是块设备、目录、字符设备、管道、符号链接、普通文件 
  22. -size      n[c]               #查长度为n块[或n字节]的文件 
  23. -depth                       #使查找在进入子目录前先行查找完本目录 
  24. -fstype                      #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到 
  25. -mount                       #查文件时不跨越文件系统mount点 
  26. -follow                      #如果遇到符号链接文件,就跟踪链接所指的文件 
  27. -cpio                %;      #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到 
  28. -mount                       #查文件时不跨越文件系统mount点 
  29. -follow                      #如果遇到符号链接文件,就跟踪链接所指的文件 
  30. -cpio                        #对匹配的文件使用cpio命令,将他们备份到磁带设备中 
  31. -prune                       #忽略某个目录 

示例:

  1. find   -name april*                     在当前目录下查找以april开始的文件 
  2. find   -name   april*   fprint file        在当前目录下查找以april开始的文件,并把结果输出到file中 
  3. find   -name ap* -o -name may*   查找以ap或may开头的文件 
  4. find   /mnt   -name tom.txt   -ftype vfat   在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件 
  5. find   /mnt   -name t.txt ! -ftype vfat   在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件 
  6. find   /tmp   -name wa* -type l            在/tmp下查找名为wa开头且类型为符号链接的文件 
  7. find   /home   -mtime   -2                 在/home下查最近两天内改动过的文件 
  8. find /home    -atime -1                  查1天之内被存取过的文件 
  9. find /home -mmin    +60                  在/home下查60分钟前改动过的文件 
  10. find /home   -amin   +30                  查最近30分钟前被存取过的文件 
  11. find /home   -newer   tmp.txt             在/home下查更新时间比tmp.txt近的文件或目录 
  12. find /home   -anewer   tmp.txt            在/home下查存取时间比tmp.txt近的文件或目录 
  13. find   /home   -used   -2                  列出文件或目录被改动过之后,在2日内被存取过的文件或目录 
  14. find   /home   -user cnscn                列出/home目录内属于用户cnscn的文件或目录 
  15. find   /home   -uid   +501                  列出/home目录内用户的识别码大于501的文件或目录 
  16. find   /home   -group   cnscn              列出/home内组为cnscn的文件或目录 
  17. find   /home   -gid 501                   列出/home内组id为501的文件或目录 
  18. find   /home   -nouser                    列出/home内不属于本地用户的文件或目录 
  19. find   /home   -nogroup                   列出/home内不属于本地组的文件或目录 
  20. find   /home    -name tmp.txt    -maxdepth   4   列出/home内的tmp.txt 查时深度最多为3层 
  21. find   /home   -name tmp.txt   -mindepth   3   从第2层开始查 
  22. find   /home   -empty                     查找大小为0的文件或空目录 
  23. find   /home   -size   +512k                查大于512k的文件 
  24. find   /home   -size   -512k               查小于512k的文件 
  25. find   /home   -links   +2                查硬连接数大于2的文件或目录 
  26. find   /home   -perm   0700                查权限为700的文件或目录 
  27. find   /tmp   -name tmp.txt   -exec cat {} ; 
  28. find   /tmp   -name   tmp.txt   -ok   rm {} ; 
  29.  
  30. find    /   -amin    -10     # 查找在系统中最后10分钟访问的文件 
  31. find    /   -atime   -2        # 查找在系统中最后48小时访问的文件 
  32. find    /   -empty             # 查找在系统中为空的文件或者文件夹 
  33. find    /   -group   cat        # 查找在系统中属于 groupcat的文件 
  34. find    /   -mmin   -5         # 查找在系统中最后5分钟里修改过的文件 
  35. find    /   -mtime   -1       #查找在系统中最后24小时里修改过的文件 
  36. find    /   -nouser           #查找在系统中属于作废用户的文件 
  37. find    /   -user    fred     #查找在系统中属于FRED这个用户的文件 

热门栏目