您的位置:首页 > 运维架构 > Linux

文件名查找指令find

2016-05-19 21:41 405 查看
一,文件查找命令 在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 代表bytek 代表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博大精深,其他的后面再了解,暂时就说这么多啦啦啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息