聊聊【find】文件搜索神器的那些事

 

find的事

find命令用于在指定的路径中查找指定的文件,可以使用通配符等,再则,find是个使用频率比较高的命令,无论是在日常维护还是写相关脚本,使用可是find的频率是相当高的。

 

 

find使用格式

find 路径 选项

 

 

find常用的选项

-name:查找文件名匹配所指定文件名的所有文件,可以使用通配符

-lname:查找文件名匹配所指定文件名的所有符号链接文件,可以使用通配符

-gid:查找指定用户组的所有文件

-uid:查找指定用户的所有文件

-empty:查找大小为0的目录或文件

-group:查找指定用户组的所有文件

-user:查找指定用户的所有文件

-depth:查找文件时,先查找当前目录下的文件,然后再查找其子目录下的文件

-prune:指定查找时不查找的目录,如果同时使用-depth选项,那么-prune选项就会被忽略,不生效

-size:查找指定文件大小的所有文件。带有c时表示文件大小以字节计算

-mtime:按时间查找,+n表示n天之前的,-n表示今天到n天前之间的

-atime:按文件访问时间查找

-ctime:按文件创建时间查找,+n表示n天之前的,-n表示今天到n天前之间的

-perm:按权限查找

-nogroup:查无有效属组的文件,即文件的属组在/etc/groups中不存在

-nouser:查无有效属主的文件,即文件的属主在/etc/passwd中不存

-type:文件类型,指定文件类型查找,文件类型包括:

  1. b:块设备文件
  2. c:字符设备文件
  3. f:普通文件
  4. l:符号连接
  5. d:目录
  6. p:管道
  7. s:sockel文件

-print:将查找结果输出到标准输出

-ok:对查找出符合条件的文件的执行所给出的Linux命令,与-exec不同的是,-ok这个选项会先用户询问是否需要执行该命令

-exec:对查找出符合条件的文件执行所给出的Linux命令,而不询问用户是否需要执行该命令,{}表示shell命令的选项即为所查找到的文件。命令的未必必须是"\;"结束。(-exec参数后面跟的是 command 命令,它的终止是以“;”为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠,{} 花括号代表前面find查找出来的文件名,使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find 查找,很方便的。在有些操作系统中,只允许 -exec 选项执行诸如 ls 或 ls -l 这样的命令。大多数用户使用着一些选项是为了查找旧文件并删除它们。建议再真正执行 rm 命令删除文件之前,最好先用 ls 命令看一下,确认他们是所要删除的文件。 exec 选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号。为了使用 exec 选项,必须要同时使用 print 选项。如果验证一下 find 命令,会发现该命令只输出从当前路径起的相对路径及文件名。)

 

 

 

应用实例

查找除了/usr/bin/外的rm文件,rm文件为普通文件

find / -path "/usr/bin" -prune -o -name "rm" -type f

 

查找指定路径下属于root用户的文件

find /usr/local -user root

 

在当前目录查找前2天前的文件

find . -mtime +2

 

在当前目录查找前2天前的文件并删除,删除时要增加文件类型

find . -mtime -2 -type f -exec rm {} \;

 

查找系统中大于10M的文件

find / -type f -size 10M

 

查找系统中.txt的所有文件

find / -name *.txt

 

查找系统当前10M以上的文件和当天访问时间的文件

find / -size +10M -mtime 0

 

 

 

 

转载请注明原文链接:聊聊【find】文件搜索神器的那些事

发表评论:

共有 0 条评论

 Top