码迷,mamicode.com
首页 > 其他好文 > 详细

文件名查找指令find

时间:2016-05-20 06:25:14      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:执行文件   linux   数据库   

一,文件查找命令    

    在linux下有相当优异的查找命令。那怎么查找一个文件的存放路径呢?通常我们会用到下面这三个命令:

    which  查看可执行文件的位置。

    whereis  查看文件的位置。

    locate  配合数据库查看文件位置。

    find  实际搜寻硬盘查询文件名称。

    通常我们先使用前面三个命令来进行查找,如果真的找不到。再使用find命令来查找。因为whereis和locata是利用数据库来查找数据的,而且并没有实际查找硬盘,所以速度相当的快。

二,find命令

    find是一个很强大的命令,它是直接查找硬盘的。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

1,命令格式:

技术分享

2,命令功能:

    用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)

3,命令参数:

PATH find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 

option 命令参数的选择。

action包含这几个选项:

-print find命令将匹配的文件输出到标准输出。-exec find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为‘command‘ { } \;,注意{  }和\;之间的空格。 

-ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

4,命令选项:

(1)与时间有关的参数:-atime -ctime -mtime 下面以-mtime为例进行说明:

-mtime n :n为数字,意义为n天之前的“一天以内”被更改过的文件;

-mtime +n :列出n天之前(不含n天本身)被更改过的文件名; 

-mtime -n :列出在n天之内(含n天本身)被更改过的文件名;

-newer file :file为一个存在的文件,列出比file还要新的文件名。

-newer file1 ! file2  查找更改时间比文件file1新但比文件file2旧的文件。

技术分享(2)与用户和用户组有关的参数

-uid n :n为数字,这个数字是用户的账号ID,即UID,这个UID是记录在/etc/passwd里面与账号名称对应的数字。

-gid n :n为数字,这个数字是用户的账号ID,即GID,这个UID是记录在/etc/group中。

-user name :name为用户账号名称。

-group name :name为用户组名。

-nouser :寻找文件的所有者不存在于/etc/passwd的人。

-nogroup :寻找文件的所有用户组不存在于/etc/passwd中的文件。

当你自行安装软件时,很可能该软件的属性当中并没有文件所有者,这个时候可以使用-nouser与

-nogroup进行查找。

技术分享

技术分享

技术分享

(3)与文件权限与名称有关系的参数

-name filename :查找文件名为filename的文件。

-user :按照文件属主来查找文件。

-group 按照文件所属的组来查找文件。

-size n [c] :查找文件长度为n块的文件,带有c时表示文件长度以字节计。

-size [+-]SIZE :查找比SIZE还要大(+)或者小(-)的文件。这个SIZE的规格有:

c 代表byte

k 代表1024bytes,要找比50KB大的文件就是“-size +50k”。

-type :查找某一类型的文件,诸如:

b  块设备文件。

d  目录。

c  字符设备文件。

p  管道文件。

l  符号链接文件。

f  普通文件。

p  管道文件。

s  套接字。

-prune :使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么

-prune将被find命令忽略。

-perm :按照文件权限来查找文件。

-perm mode :查找文件权限“刚好等于”mode的文件,这个mode文件为类似chmod的属性值,举例来说,-rwsr-xr-x的属性值为4755。

-perm -mode :查找文件权限“必须要全部包含mode的权限”的文件,举例来说,我们要查找-rwxr--r--即0744的文件,当一个文件-rwxr-xr-x的权限为4755时,也会被列出来,因为-rwsr-xr-x的属性已经包括了-rwxr--r--的属性了。

-perm +mode :查找文件权限“包含mode的权限”的文件,举例来说,我们要查找-rwxr--r--即0744的文件,当一个文件-rwxr-xr-x的权限为4755时,也会被列出来,因为-rwxr-xr-x的属性已经包括了-rwxr--r--的属性了。

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

-fstype :查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount :在查找文件时不跨越文件系统mount点。

-follow :如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

-cpio :对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

技术分享

技术分享

技术分享

技术分享技术分享

(4)其他可进行的操作

-print :将结果打印到屏幕上,这个是默认操作。

在/logs目录中查找更改时间在5日以前的文件并删除它们:

$ find logs -type f -mtime +5 -exec -ok rm {} \

技术分享

三,find的特殊功能

find的特殊功能就是能够进行额外的动作(action)。

技术分享

    find不但可以指定查找的目录(连同子目录),并且可以利用额外的参数来找到最正确的文件名。


    如果你要找的文件具有特殊属性,例如SUID,文件所有者,文件大小等,利用locata是没有办法达到的,但是find就可以哦。find还可以利用通配符来寻找文件名。例如:想找出/etch下面文件名包含httpd的文件,可以用下面的命令:

技术分享

find博大精深,其他的后面再了解,暂时就说这么多啦啦啦。










本文出自 “Stand out or Get out” 博客,请务必保留此出处http://jiazhenzhen.blog.51cto.com/10781724/1775182

文件名查找指令find

标签:执行文件   linux   数据库   

原文地址:http://jiazhenzhen.blog.51cto.com/10781724/1775182

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!