在linux下面找一个文件,当不知道其所在的时候,确实是一件头疼的事情。这是我一般查找时使用的几个命令:find、locate、whereis,先记录下来。

一、find

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

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

#-print 将查找到的文件输出到标准输出
#-exec   command   {} \;      —–将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户

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

ps:因为find是在硬盘上遍历查 找,所以非常消耗硬盘的资源,同时效率也非常低,在查找目标明确的时候建议使用下面两个命令,不过我一般是喜欢使用find的。 

在命令模式下查询shutdown字符串 Linux_文件系统


二、whereis

whereis [ -sbmu ] [ -SBM dir ... -f ] name...

参数说明: 
-b  只查找二进制文件。 
-B<目录>  只在设置的目录下查找二进制文件。 
-f  不显示文件名前的路径名称。 
-m  只查找说明文件。 
-M<目录>  只在设置的目录下查找说明文件。 
-s  只查找原始代码文件。 
-S<目录>  只在设置的目录下查找原始代码文件。 
-u  查找不包含指定类型的文件。

例如:

<span style="font-family:SimSun;font-size:14px;">[root@testsrv ~]# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz    //不带参数,默认结果包括执行文件、源代码和手册页文件
[root@testsrv ~]# whereis -b ls
ls: /bin/ls
[root@testsrv ~]# whereis -m ls
ls: /usr/share/man/man1/ls.1.gz
[root@testsrv ~]# whereis -s ls
ls:
[root@testsrv ~]# whereis -u ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz</span>



ps:


whereis是从/{bin,sbin,etc}、/usr{lib,bin,old,new,local,games,include,etc,src,man,sbin,X386,TeX,g++-include}
/usr/local/{X386,TeX,X11,include,lib,man,etc,bin,games,emacs}这几个目录查找。---------------这是网上找的一段,不知道是否正确。


三、locate

locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。即先运行:updatedb(无论在那个目录中均可,可以放在crontab中 )后在   /var/lib/slocate/ 下生成 slocate.db 数据库即可快速查找。在命令提示符下直接执行#updatedb 命令即可。------------locate是从 updatedb命令生成的数据库中查找目标

参数说明:

-d或--database= 配置locate指令使用的数据库。locate指令预设的数据库位于/var/lib/slocate目录里,文档名为slocate.db,您可使用 这个参数另行指定。
--help  在线帮助。
--version  显示版本信息。

例如:

<span style="font-family:SimSun;font-size:14px;">[root@testsrv ~]# locate passwd 
/lib/security/pam_unix_passwd.so 
/lib/security/pam_passwdqc.so 
/usr/include/rpcsvc/yppasswd.x 
/usr/include/rpcsvc/yppasswd.h 
/usr/lib/perl5/5.8.5/i386-linux-thread-multi/rpcsvc/yppasswd.ph 
/usr/lib/kde3/kded_kpasswdserver.la 
/usr/lib/kde3/kded_kpasswdserver.so 
/usr/lib/ruby/1.8/webrick/httpauth/htpasswd.rb 
/usr/bin/vncpasswd 
/usr/bin/userpasswd 
/usr/bin/yppasswd </span>




四、which


which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。


which命令的使用实例:

<span style="font-family:SimSun;font-size:14px;">[root@CentOS-78 home] which grep </span>





五、type

type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
type命令的使用实例:

系统会提示,cd是shell的自带命令(build-in)。

系统会提示,grep是一个外部命令,并显示该命令的路径。

加上-p参数后,就相当于which命令。

在命令模式下查询shutdown字符串 Linux_数据库_02