linux下常用的文件搜索which、whereis、locate、find。

linux下常用的文件搜索指令:which、whereis、locate、find。

1. which(寻找“可执行程序”)

which命令是根据"PATH"环境变量所规范的路径去搜索“可执行文件”的文件名,重点是只会搜索可执行程序。

which ls  # 在PATH的文件路径下搜多ls可执行程序,返回第一个文件名为ls可执行程序的路径。

which -a ls # 在PATH的文件路径下搜多ls可执行程序,返回所有文件名为ls可执行程序的路径

2. whereis(在特定目录中搜索文件文件民)

whereis [选项] 文件或目录名
选项与参数:
-l    :可以列出 whereis 会去查询的几个主要目录而已
-b    :只找 binary 格式的文件
-m    :只找在说明文档 manual 路径下的文件
-s    :只找 source 来源文件
-u    :搜寻不在上述三个项目当中的其他特殊文件

查看whereis会搜索的目录:

linux下常用的文件搜索which、whereis、locate、find。_第1张图片

搜索名字中包含ls的文件名的文件:

在这里插入图片描述
3. locate/updatedb

locate命令是根据本地数据库进行文件搜索,因为数据库每天只会同步一次,有可能会出现新建文件搜索不到的情况,所以在使用locate搜索文件之前使用updatedb命令进行手动数据更新。

locate [-ir] keyword
选项与参数:
-i  :忽略大小写的差异;
-c  :不输出文件名,仅计算找到的文件数量
-l  :仅输出几行的意思,例如输出五行则是 -l 5
-S  :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等
-r  :后面可接正则表达式的显示方式

注意:在使用locate前,手动更新数据库updatedb。

**4.find **

find命令相当于对硬盘进行检索,通常来说耗费的时间是比较多的,不太建议使用,除非在特定情况下。

4.1 搜索与时间有关的:

find [PATH] [option] [action]
  -mtime  n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;
   -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件文件名;
   -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件文件名。
   -newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名

将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出
find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,
# 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?
# find / -mtime 3 有变动过的文件都被列出的意思!


4.2 搜索与使用者或群组名称有关的。

	-uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在
            /etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
   -gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在
            /etc/group,相关的介绍我们会第四篇说明~
   -user name :name 为使用者帐号名称喔!例如 dmtsai 
   -group name:name 为群组名称喔,例如 users ;
   -nouser    :寻找文件的拥有者不存在 /etc/passwd 的人!
   -nogroup   :寻找文件的拥有群组不存在于 /etc/group 的文件!
                当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,
                这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。

搜寻 /home 下面属于 dmtsai 的文件
find /home -user dmtsai
# 这个东西也很有用的~当我们要找出任何一个使用者在系统当中的所有文件时,
# 就可以利用这个指令将属于某个使用者的所有文件都找出来喔!

4.2 与文件权限及名称有关的。

  -name filename:搜寻文件名称为 filename 的文件;
   -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:
                   c: 代表 Byte, k: 代表 1024Bytes。所以,要找比 50KB
                   还要大的文件,就是“ -size +50k ”
   -type TYPE    :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f), 设备文件 (b, c),
                   目录 (d), 链接文件 (l), socket (s), 及 FIFO (p) 等属性。
   -perm mode  :搜寻文件权限“刚好等于” mode 的文件,这个 mode 为类似 chmod
                 的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
   -perm -mode :搜寻文件权限“必须要全部囊括 mode 的权限”的文件,举例来说,
                 我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,
                 当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,
                 因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
   -perm /mode :搜寻文件权限“包含任一 mode 的权限”的文件,举例来说,我们搜寻
                 -rwxr-xr-x ,亦即 -perm /755 时,但一个文件属性为 -rw-------
                 也会被列出来,因为他有 -rw.... 的属性存在!

找出文件名为 passwd 这个文件
find / -name passwd


找出文件名包含了 passwd 这个关键字的文件
find / -name "*passwd*"
# 利用这个 -name 可以搜寻文件名啊!默认是完整文件名,如果想要找关键字,
# 可以使用类似 * 的任意字符来处理

找出 /run 目录下,文件类型为 Socket 的文件名有哪些?
find /run -type s
# 这个 -type 的属性也很有帮助喔!尤其是要找出那些怪异的文件,
# 例如 socket 与 FIFO 文件,可以用 find /run -type p 或 -type s 来找!

你可能感兴趣的:(ubuntu18.04,linux,linux,服务器,运维)