一,文件查找命令
在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旧的文件。
-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