Linux指令与文件的搜寻

时间:2021-11-29 16:30:18

1.脚本文件名的搜寻

1.which(寻找【执行档】)

which [-a] command

选项或参数:

-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称

这个指令是根据『PATH』这个环境变量所规范的路径,去搜寻『执行档』的档名~

2.文件档名的搜寻

1.whereis(由一些特定的目录中寻找文件文件名)

whereis [-bmsu] 文件或目录名

选项与参数:

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

whereis 只找几个特定的目录而已~并没有全系统去查询,whereis 主要是针对 /bin /sbin 底下的执行档, 以及 /usr/share/man 底下的 man page 文件。

2.locate/updatedb

locate [-ir] keyword

选项与参数:

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

使用 locate 来寻找数据的时候特别的快, 因为 locate 寻找的数据是由『已建立的数据库 /var/lib/mlocate/』 里面的数据所搜寻到的,所以不用直接在去硬盘当中存取数据。

限制:locate是由数据库来搜寻的,而数据库的建立默认是每天执行一次(取决于系统的不同),当新建立起来的文件,却在数据库更新之前搜寻该文件,locate会提示找不到。因为必须要更新数据库,直接输入updatedb。

 updatedb:根据 /etc/updatedb.conf 的设定去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库文件;

 locate:依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名。

3.find

find PATH [action]

选项与参数:

1.与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明

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

Linux指令与文件的搜寻
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 搜寻。

3.与文件权限及名称有关的参数:

 -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.... 的属性存在!

4. 额外可进行的动作:

 -exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。
 -print :将结果打印到屏幕上,这个动作是预设动作!

Linux指令与文件的搜寻
 {} 代表的是『由 find 找到的内容』,如上图所示,find 的结果会被放置到 {} 位置中;

 -exec 一直到 \; 是关键词,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间的就是 find 指 令内的额外动作。 在本例中就是『 ls -l {} 』

 因为『 ; 』在 bash 环境下是有特殊意义的,因此利用反斜杠来跳脱。

在/etc底下档名包含httpd的文件

find /etc -name ‘* httpd *‘ (通配符)